我正在尝试编写HQL查询来选择Player
,Score
列表只有小于3的分数。
因此,Player
和Score
实体之间的关系是一对多关系。
示例hibernate映射(我的):
<class table="player" name="Player">
<id type="long" column="id" name="id">
<generator class="native"/>
</id>
<property name="name" type="string"/>
<list name="scores" cascade="all-delete-orphan">
<key column="score_id"/>
<index column="table_row_num"/>
<one-to-many class="Score"/>
</list>
</class>
<class table="score" name="Score">
<id type="long" column="id" name="id">
<generator class="native"/>
</id>
<property name="date" type="timestamp"/>
<property name="score" type="int"/>
</class>
此示例用于hibernate manual(据我了解实体关系):
FROM Player p WHERE 3 > ALL ELEMENTS(p.scores)
另一个我的HQL版本:
FROM Player p JOIN p.scores s WHERE 3 > ALL ELEMENTS(s.score)
我尝试理解本手册中的另一个代表性例子:
SELECT p FROM NameList list, Person p WHERE p.name = SOME ELEMENTS(list.names)
我得到的SQL:
select player0_.id as id0_, player0_.name as name0_
from player player0_
where 3 > all (select scores1_.id
from score scores1_
where player0_.id=scores1_.score_id)
请注意,子查询中的选定字段始终为Score
标识...
是否可以使测试工作?请帮忙。
PS。解决方法对我没用...我正在尝试理解应该使用elements
函数的情况,或者如果这是一个休眠错误(?)......