使用hibernate HQL函数元素

时间:2014-11-05 18:33:22

标签: hibernate hql elements

我正在尝试编写HQL查询来选择PlayerScore列表只有小于3的分数。 因此,PlayerScore实体之间的关系是一对多关系。 示例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标识...

完整SSCCEhere

是否可以使测试工作?请帮忙。

PS。解决方法对我没用...我正在尝试理解应该使用elements函数的情况,或者如果这是一个休眠错误(?)......

0 个答案:

没有答案