Grails에서 org.hibernate.LazyInitializationException
을 얻는 가장 일반적인 장소는 어디에서 왔으며 그 원인은 무엇이며 어떻게 해결 했습니까?Grails와 Hibernate의 Lazy 초기화 예외
나는이 예외가 초보자에게 많이 떠오른다 고 생각한다. 그래서 더 많은 예제를 제공한다면, 좋을 것이다.
Grails에서 org.hibernate.LazyInitializationException
을 얻는 가장 일반적인 장소는 어디에서 왔으며 그 원인은 무엇이며 어떻게 해결 했습니까?Grails와 Hibernate의 Lazy 초기화 예외
나는이 예외가 초보자에게 많이 떠오른다 고 생각한다. 그래서 더 많은 예제를 제공한다면, 좋을 것이다.
는 예를 취할 수 있습니다. 위의 예를 고려하면, 책 객체를 얻으면, Book 객체는 최대 절전 모드 세션 객체, 즉 제 1 레벨 캐시에 자동으로 첨부된다. 그리고 도메인 객체가 세션 객체로부터 분리 된 후 book.author를 가져 오려고 할 때, 현재 Lazy 초기화 예외가 발생합니다.
그래서 솔루션입니다
는이 중 하나를 아래의 코드를 사용하여 세션을 최대 절전 모드 열망 모드를 가져 오거나 책 객체를 연결하기 :if(!book.isAttached()){
book.attach()
}
위의 설명은 시나리오 중 하나입니다. 더 많은 것이있을 수 있습니다. 다른 사람들에게 제발 공유하도록 요청합니다.
사용자가 JSecurity/Shiro를 사용하여 트랜잭션이 아닌 서비스에서 일부 작업을 수행 할 수있는 권한이 있는지 확인했기 때문에 하나가 있습니다. 결국 예외를 제거하기 위해 트랜잭션을 트랜잭션으로 설정해야했습니다. 여기
상세 정보 : 모드는 도메인 클래스에 게으른 가져 우리가 알다시피,
class Book {
String title
Author author
}
class Author {
...
}
Book book = Book.get(1)
나를 위해 정말 잘 작동하지만 필요한 모든 곳에 배치하는 것은 지루하다! – IgniteCoders
@IgniteCoders Amit가 SO에서 활발하게 보이지 않습니다. 한 세션에서 어떤 원인과 객체가 분리되는지 알고 있습니까? –
@AlexanderSuraphel 나는 정말로 모른다. 예외가 어딘가에서 일어날 때 나는 그것을 놓는다. – IgniteCoders