2013-03-19 4 views
0

OneToMany 관계에서 자식 클래스의 ID 속성을 기반으로 결과를 필터링하는 대신 Hibernate (4.1.9.Final)가 내부 외부 대신에 외부 외부 조인을 생성합니다. 가입하고 원하지 않는 결과를 반환하십시오.Hibernate OneToMany 관계 내부 조인

모델 :

부모 :

@Entity 
@Table(name = "CATEGORY") 
public class Category 
{ 
    @Id 
    @Column(name = "CATEGORYID") 
    private int ID; 

    @Column(name = "CATEGORYNAME") 
    private String name; 

    @OneToMany(fetch = FetchType.EAGER) 
    @JoinColumn(name = "CATEGORYID") 
    @Filter(name = "TEST_RUN_ID_FILTER") 
    private Collection<TestCase> testCases 
... 
} 

아이 :

@Entity 
@Table(name = "TESTCASE_NEW") 
@FilterDef(name = "TEST_RUN_ID_FILTER", defaultCondition = "TESTRUNID in (:IDS)", parameters = { @ParamDef(name = "IDS", type = "int") }) 
public class TestCase 
{ 
    @Id 
    @Column(name = "TESTCASEID") 
    private int ID; 

    @Column(name = "TESTCASENAME") 
    private String name; 

    @Column(name = "STATUS") 
    private String status; 

    @Column(name = "TESTRUNID") 
    private int testRunId; 
... 
    } 

DAO :

public List<Category> getAllCategoriesForTestRuns(List<Integer> testRunIDs) 
    { 
     Session session = getSession(); 
     session.enableFilter("TEST_RUN_ID_FILTER") 
       .setParameterList("IDS", testRunIDs); 
     Query query = session.createQuery("FROM " + Category.class.getSimpleName()); 
     List<Category> result = query.list(); 
     return resul2t; 
    } 

Hibernate에게 내부 조인을 사용하도록 어떻게 말할 수 있습니까?

답변

0

다음과 같이 뭔가를 시도 할 수 있습니다 :

select c from Category c inner join c.testCases tc