를 가져 오는 없습니다. 시도하고 a.b를 사용하여 액세스 할 경우, 실패하지만, 만약 내가 사용자 a.getB(); 성공합니다.Hibernate는 다음 코드를 고려 public 멤버에게
왜 이런가요?
를 가져 오는 없습니다. 시도하고 a.b를 사용하여 액세스 할 경우, 실패하지만, 만약 내가 사용자 a.getB(); 성공합니다.Hibernate는 다음 코드를 고려 public 멤버에게
왜 이런가요?
게으른 페치 문제와 비슷합니다. 퍼블릭 레퍼런스는 당신이 그것을 직접 접근하려고 시도 할 때 null이지만, "get"으로 그것을 할 때, Hibernate는 데이터베이스를 호출하고 그 인스턴스를 당신에게 수화시키는 것을 알고있다.
그게 나에게 들리는 것 같아. 내가 .getB()를 호출하고, a.b를 호출하면, 여전히 a.b를 호출 할 수 없다. – Jesse
b 필드가 일시적이기 때문에.
일시적인 현상이 필요합니까? 제거해보십시오.
일시적이어야하는 유일한 필요성은 내가 데이터베이스에서 해당 링크를 원하지 않는다는 것입니다. – Jesse
클래스 멤버가 항상 비공개이어야한다는 것을 의미한다고 가정하고 있지만 동의합니다.하지만이 코드를 상속 받았으며 JSP에서 수천 개의 참조를 변경해야하므로 발생하지 않을 것입니다. – Jesse
좋아, 난 엉망진창이 너의 잘못이 아니길 바래.). 하지만 물건을 분리하려고 했습니까? 이러한 아키텍처를 기반으로 OpenSessionInViewFilter (또는 (anti -) "패턴"))이 사용되므로 객체가 요청 내에서 분리되지 않습니다. 실제 객체는 프록시이고 멤버 및 메소드에 대한 액세스는 지속성 관리자의 전략 또는 구현에 의존한다는 점을 명심해야합니다. 그리고 Hibernate는 멤버에게 직접 접근하지 않는 것과 같은 몇 가지 규칙을 따른다고 가정한다. – cafebabe
실제로 아키텍처를 수정하려고합니다. 객체를 가져온 후에 evoked하려고 시도했지만 아무 것도 액세스하려고 시도한 후에 다음과 같은 예외가 발생했습니다. org.hibernate.LazyInitializationException : 프록시를 초기화 할 수 없습니다 - 세션 없음 – Jesse