2014-07-14 2 views

답변

1

하이버 네이트는 일반적으로 SQL 쿼리에서와 같이 Criteria을 통해 "주문형"조인을 허용하지 않는다. However, this appears to indeed be possible using a work-around of having multiple Criterias.

그러나 당신이 당신의 Entity 클래스의 관계를 매핑하는 알렉스의 제안을 따른다면 Customer 이미에 "매핑"는 account 객체 것이다, 당신은이 같은 Criteria 훨씬 간단하게 만들 수 있습니다

Criteria criteria = session.createCriteria(Customer.class) 
     .createCriteria("account") 
     .addOrder(Order.asc("accountType")); 

연결을 수행하려면 Entity 클래스에서 refId 필드를 관련 개체로 바꿀 수 있습니다. 이 일대일 관계였다 가정

@Entity 
public class Customer { 
    // Instead of "refId" field: 
    @OneToOne(mappedBy = "customer") 
    private Account account; 
} 

@Entity 
public class Account { 
    // Instead of "refId" field: 
    @OneToOne 
    @JoinColumn(name = "refIdColName") 
    private Customer customer; 
} 

: 그래서, Customer 클래스에서, 당신은 같은 (또는 그 반대), Account 오브젝트 관련있을 수 있습니다. You don't need to reference the primary key in one-to-one mapping.

+0

주어진 링크 (DetachedCriteria)가 예상대로 작동하고, refId가 원하는대로 수행되고 있습니다. 옵션이 없지만 그렇게 진행합니다. 어쨌든 고마워. – bdogru

1

테이블 간의 관계를 사용해야합니다. @OneToOne, @ManyToOne.
그 후에는 HQL으로 작성하는 것이 쉬울 것입니다.
자세한 내용은 here을 참조하십시오.

+0

하지만 내 경우에는 클래스가 서로 oneffone 관계가 아니라 기본 키가 아닌 – bdogru