2011-08-18 3 views
2

다음 JPA 매핑이 있다고 가정합니다.지도의 키를 기반으로 HQL을 사용하여 값을 선택



    @Entity 
    @Table(name = "transaction") 
    public class Transaction { 

     @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER) 
     @JoinTable(name = "trx_addi_info") 
     private Map additionalInfo; 


    } 

additionalInfo 맵에 특정 키 - 값 쌍이있는 모든 트랜잭션을 가져 오기 위해 HQL을 쓰고 싶습니다. 나는



    SELECT trx FROM Transaction trx inner join trx.additionalInfo addInfo WHERE addInfo.???? 

, 나는 다음과 같은 가입 할 생각하지만 additionalInfo지도에서 특정 키 - 값 쌍과 일치를 얻기 위해 WHERE 절을 넣어하는 방법을 명확하지 않다. 아무도 이걸 도와 줄 수 없나요?

미리 감사드립니다.

답변

1

조인 된 색인 된 모음 (배열, 목록 및지도)의 별칭에 적용되는 HQL index() 특정 기능을 사용해야합니다. Hibernate 참조 문서의 14.10. Expressions 참조

//Example of HQL returning `Transaction` object that have `additianlInfo` with 
//the `KEY` equal to the string `test` 

SELECT trx FROM Transaction trx inner join trx.additionalInfo addInfo WHERE index(addInfo) > 'test' 
관련 문제