2009-10-15 41 views
0

我有以下的Hibernate 3映射用戶等級:如何使用Hibernate中的給定鍵從映射查詢不同的值?

<class name="org.test.User" table="users"> 

... some other mapping... 

    <map name="metadata" table="user_metadata"> 
     <cache usage="transactional"/> 
     <key column="user_id" not-null="true" foreign-key="FK_USERMETADATA_USER_ID"/> 
     <map-key type="string" column="datum_key" length="255" /> 
     <element type="string" column="datum_value" length="1024" not-null="true"/> 
    </map>    
</class> 

我想檢索與給定datum_key所有datum_values的列表。

在SQL查詢看起來像:

select distinct datum_value from user_metadata where datum_key = 'Member Type' 

什麼將是最可行的方法?爲user_metadata創建一個新的Hibernate映射?或者嘗試使用返回(可能是標量)值的索引/元素來進行HQL/JPA QL查詢?到目前爲止,我嘗試了一些HQL/JPA QL方法,但我並沒有太多。

回答

1

在HQL中沒有與上述SQL查詢等效的內容。 indices()函數以及索引解引用只能在'WHERE'子句中使用。

最簡單的解決方案是將SQL查詢映射爲命名查詢並將其作爲scalar native SQL query運行。