我对User类有以下Hibernate 3映射:
<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方法,但我并没有走得太远。
答案 0 :(得分:1)
在HQL中没有与上述SQL查询等效的内容。 indices()函数以及索引解除引用只能在'WHERE'子句中使用。
最简单的解决方案是将SQL查询映射为命名查询,并将其作为scalar native SQL query运行。