2009-12-17 8 views
0

연관 테이블을 통해 관련된 개체를 선택하기위한 조건 쿼리를 만들려고합니다.Hibernate Criteria Query - 속성을 가진 many-to-many를 검색하는 방법?

Insurer * - 1 Insurer_Section 1 - * Section 

InsurerSection의 연관 속성은 active : bool입니다.

InsurerSection 클래스의 활성 속성이 true로 설정된 모든 Insurer를 얻으려면 어떻게해야합니까?

PS :이처럼 갈 수 없어 :

Insurer.FindAll(
DetachedCriteria.For<Insurer>().CreateCriteria("Insurer_Section").Add(Expression.Eq("Active", true) 
); 

Insurer_Section는 hasAndBelongsToMany의를 통해 매핑되는 연관 테이블이기 때문에 :

[HasAndBelongsToMany(typeof(Section), Table = "`Insurer_Section`", 
      ColumnKey = "`IdInsurer`", ColumnRef = "`IdSection`", 
      Cascade = ManyRelationCascadeEnum.AllDeleteOrphan)] 
     private IList<Section> Sections { 
      get { return this.sections; } 
      set { this.sections = value; } 
     } 

[HasAndBelongsToMany(typeof(Insurer), Table = "`Insurer_Section`", 
      ColumnKey = "`IdSection`", ColumnRef = "`IdInsurer`", 
      Cascade = ManyRelationCascadeEnum.None, Inverse = true)] 
     public IList<Insurer> Insurers { 
      get { return this.insurers; } 
      set { this.insurers = value; } 
     } 

답변

2

당신을 그렇게 할 수 없다면 연관 테이블에 필요한 속성이 있으면 연관을 일대 다 (~ 일대 다)로 매핑해야한다. Insurer_Section에 대한 새로운 엔티티)는 섹션에 many-to-one 관계가 있습니다.

연관 테이블이 기본 키와 가능한 인덱스 열 이상이되는 순간, 두 엔티티 (IsActive와 같은 연관 정보와 함께 보험자 및 섹션)를 연결하는 별도의 엔티티로 연결 테이블을 매핑해야합니다.

0

토켈이 정확합니다. 새로운 연결 엔티티를 작성할뿐만 아니라 각 엔티티의 콜렉션을 새 연결 엔티티의 콜렉션으로 변경해야합니다. 그런 다음 매핑을 적절하게 변경하십시오.

관련 문제