최대 절전 모드에서 사용자 정의 기반 컬렉션 매핑을 수행하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/432347

문제

나는 객체 세트를 가지고 있도록 매핑 된 객체가 매우 간단합니다. 그러나 제가 정말로하고 싶은 것은 해당 매핑에 대한 기준을 두는 것입니다. 현재 매핑은 다음과 같습니다.

    <set name="ops" inverse="true" cascade="all, delete-orphan">
        <key column="cityblock_id" on-delete="cascade"/>
        <one-to-many class="com.tamedtornado.data.Operation"/>
    </set>

이제 모든 관련 OP를 얻는 대신 완료되지 않았거나 가지고 있지 않은 OP를 얻고 싶습니다. 일부 오래된 포럼 게시물이 저를 조금 보여 주었지만 최대 절전 모드 문서는 매우 조용합니다. 분명히 SQL-Query 태그를 사용할 수 있지만, 제가하고 싶은 일도 아닙니다.

어쨌든 HQL 쿼리로 이것을 할 수 있습니까? 간단한 쿼리로 결과를 좁히고 active_ops 및 completed_ops 등과 같은 몇 가지 컬렉션 맵이 있습니다.

건배, 제이슨

도움이 되었습니까?

해결책

아래에 6.2. 컬렉션 매핑 최대 절전 모드 문서에서 컬렉션 매핑에서 WHERE 절을 사용할 수 있음을 알게됩니다.

여기서 (선택 사항) 컬렉션을 검색하거나 제거 할 때 사용될 조건이있는 임의의 SQL을 지정합니다 (컬렉션에 사용 가능한 데이터의 하위 집합 만 포함되어야하는 경우 유용함).

당신은 당신이 당신이 HQL 쿼리를 사용하고 싶다고 말했지만 그것이 가능하다고 생각하지 않습니다. 그러나 매핑의 간단한 위치 절을 지정하면 HQL과 "실제"SQL 사이에 큰 차이가 없습니다.

다른 팁

귀하의 질문을 명확하게 이해하는지 확실하지 않지만 SQL 쿼리에서 Where 절을 사용해야하는 것 같습니다.

HQL에서 WHERE 절을 사용하거나 최대 절전 모드에서 기준 API를 사용하여 원하는 결과를 얻을 수 있어야합니다.

"Active"또는 "완료"에 대한 필드가 있다고 가정하면 HQL이 다음과 같이 보일 것입니다.

from ops where status="active"

또는 기준 API를 사용하는 경우 :

List activeOperations = sess.createCriteria(Operation.class)
    .add( Restrictions.equals("status", "active") )
    .list();

최대 절전 모드 튜토리얼의 14 장과 15 장은 이것에 대해 조금 이야기합니다.http://www.hibernate.org/hib_docs/v3/reference/en/html/index.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top