2012-02-28 4 views
1

@embeddable을 사용하여 복합 키 쿼리를 수행하려고합니다.최대 절전 모드 쿼리 복합 키

여기까지 제가 여기 있습니다.

@Embeddable 
public class IfasvVendorPK implements Serializable{ 

@Column(length = 4, nullable = false) 
protected String peId; 
@Column(length = 8, nullable = false) 
protected String peAddrCd; 

법인

@Entity 
public class IfasvVendor implements Serializable { 

@EmbeddedId 
private IfasvVendorPK ifasvVendorPK; 

쿼리

목록이 PKS가 포함되어 있습니다. 내가이 목록을 사용해야하는지 잘 모르겠다.

  Query query = session.createQuery("from IfasvVendor t0 where  t0.ifasvVendorPK.peId=:id"); 
      query.setParameter("id", list); 
      query.list(); 

쿼리가 작동하면 개체를 가져 오는 방법을 알지 못했습니다.

+0

이것은 복합 키 쿼리가 아니며 복합 키의 속성으로 검색하고 있습니다. 이것이 당신이 성취하려는 것임을 확인하십시오. 어쨌든 현재 목록은 속성 목록을 전달하려는 경우 올바르지 않습니다. 이것을 대신 -'IfasvVendor t0에서 t0.ifasvVendorPK.peId : idList'와'query.setParameter ("idList", list)'를 사용하십시오. – Perception

답변

2

나는 다음과 같은 작동해야한다고 생각합니다 :

Query query = session.createQuery("from IfasvVendor t0 where t0.ifasvVendorPK.peId in (:id)"); 
query.setParameterList("id", list); 

query.list(); 

당신은 당신의 쿼리에서 괄호 안에 명명 된 매개 변수를 둘러싸고 setParameterList를 사용해야합니다. setParameterList에 대한 javadoc을 참조하십시오. here.

쿼리 결과는 query.list()에 의해 반환 된 목록에 있습니다. 그러면 List<IfasvVendor>으로 전송할 수있는 선택되지 않은 목록이 반환됩니다.

btw. 이것은 복합 키 쿼리가 아닙니다. @Perception comment를 참조하십시오 ...

+0

나는 너와 지각이 정확하다고 믿는다. 나는 그 문제를 해결하기 위해 다시 돌아갈 기회가 없었지만, 매우 유망 해 보였다. –