2013-12-08 6 views
0

개체 내에 개체가 있고 가장 안쪽에있는 개체의 필드 중 하나를 사용하여 제한을 만들고 싶습니다. 이제 나는 다음과 같이함으로써 실현 될 수 있다고 생각했습니다 :Hibernate Crtieria 및 제한 사항이 올바르게 작동하지 않습니다.

... .add (Restrictions.eq ("myObjectTwp.myObjectThree.myObjectsID", mySearchId)). list();

그러나 이것은 효과가없는 것 같습니다. 그러나 오류 메시지가 나타나지 않고 대신이 제한 사항이 고려되지 않은 것처럼 보입니다.

+0

별칭 (조건 쿼리의 연결에 대한 설명서의 장에서 설명 됨) : http://docs.jboss.org/hibernate/core/4.2/manual/en-US/html_single/#querycriteria-associations –

답변

0

가입해야합니다. 기준의 API에서이 작업을 수행하는 가장 쉬운 방법은() 메소드 CREATEALIAS을 사용하는 것입니다

session.createCriteria(Child.class, "child") 
     .createAlias("child.parent", "theParent") 
     .add(Restrictions.eq("theParent.someField", theFieldValue)) 
     .list(); 

이 쿼리는 다음 HQL에 해당 : 당신은 세부 기준 또는를 사용할 필요가

select child from Child child 
inner join child.parent theParent 
where theParent.someField = :theFieldValue 
0

매핑 파일 (또는 특수 효과)을 공유하면 도움이 될 것이라고 생각합니다. 내 프로젝트의 예를 들어

나는 다음과 같은 한 : 나는 특정 사용자의 이메일에 관련된 클라이언트를 조회하려는 경우

<hibernate-mapping> 
    <class name="Client" table="Client"> 
    ... 
    <many-to-one name="user" class="User" column="idUser"/> 

그리고

<hibernate-mapping> 
    <class name="User" table="User"> 
    <property name="email" type="string"/> 

가 hiberante 문서 http://docs.jboss.org/hibernate/core/4.0/manual/en-US/html/querycriteria.html#querycriteria-associations에서 읽기 (합병 JB Nizet의 코멘트) :

List clients = sess.createCriteria(Client.class) 
        .createAlias("user", "u") 
        .add(Restrictions.eq("u.email", "[email protected]")) 
        .list(); 

나는 아니다. 어쨌든.

+0

아니요, alias 또는 subcriteria :'q.createAlias ​​("user", "theUser"); q.add (Restrictions.eq ("theUser.email", "[email protected]")); ' –

+0

도움이 될 것이라고 생각합니다. http://docs.jboss.org/hibernate/core/4.0/manual/ en-US/html/querycriteria.html # querycriteria-associations –

+0

@JBNizet 저에게 답을 달아 주시면 감사하겠습니다. 감사합니다. 감사합니다. – user1383163