2009-11-02 7 views
0

나는 엔티티 B의 외래 키가있는 엔티티 A를 가지고 : 나는 Hibernate 외래 키 매핑?

return session.createCriteria(EntityA.class).list(); 

내가뿐만 아니라 기업, 안쪽 entityB의 속성을 가져 전화

entity A --> id, entity_a_name, foreign_key_entity_B 

. 필요하지 않은 경우 게이지로드하지 않도록 게으른로드를 만드는 방법은 무엇입니까?

답변

1

귀하의 설명에서 당신이 말하는 관계의 유형이 명확하지 않지만, 그것이 일대일 또는 일대일 인 경우 상황이 그리 간단하지 않습니다. A.entityB이 nullable (non-optional)이면, Hibernate는 그 프로퍼티가 null인지를 알기 위해 관계를 eager-load하도록 강제된다. 관계를 non-optional로 표시하는 것만으로 (이 경우에는 Hibernate 으로 가정하고, 그렇지 않으면 오류가 아니기 때문에 널이 아님) lazily로드 할 수 있습니까? LazyCollection @

1
  • 는 : @ManyToMany 과 @OneToMany 협회에 lazyness 옵션을 정의합니다. LazyCollectionOption는 (콜렉션이 게으른와 상태에 액세스 할 때 로드 될 것입니다), EXTRA (컬렉션이 게으른이며 모든 작업이 수집 로딩을 방지 하려고합니다 TRUE 할 수 있습니다,이 거대한에 특히 유용하다 모음 모든 요소를로드하여 지연 필요한) 및 FALSE (연관되지 아님) @

  • 오기는 다음 연결로드에 사용 페칭 전략을 정의한다. 의 fetchMode는 (하위 선택 전략을 사용, 컬렉션에서만 사용할 수 있습니다 - 자세한 내용은 최대 절전 모드 참조 문서를 참조하십시오) (선별이 협회를로드 할 필요가있을 때 트리거), 부속 SELECT 할 수 있습니다 또는 가입 (소유자 엔터티를로드하는 동안 SQL JOIN을 사용하여 연결을로드합니다). JOIN 은 지연된 모든 속성을 덮어 씁니다 (JOIN 전략을 통해로드 된 연관이 지연 될 수 없음).