【问题标题】:HQL querying issue in One to Many Case一对多情况下的 HQL 查询问题
【发布时间】:2014-04-29 08:46:37
【问题描述】:

我有一个用户表和另一个名为 Transactiopn 的表。一个用户有多个交易。我正在尝试编写一个 HQL 来获取所有用户的列表和他的最新交易。

我该怎么写?最新交易是指id最大的交易。

如果我写类似的东西

select name, transaction.amount from Users

我收到一个错误

非法尝试使用元素属性引用取消引用集合 [{synthetic-alias}{non-qualified-property-ref}trIP 属性]

这是因为事务是用户表中的一个列表。我需要从用户本身中进行选择,因为还有其他相关的引用列。那么如何取最后一笔交易金额呢?

如果有人可以帮助我,我可以尝试翻译一个普通的 SQL 查询。

【问题讨论】:

    标签: java sql hibernate hql


    【解决方案1】:

    JPA 规范规定 select 子句不能包含集合值属性。您收到的错误反映了这一点。

    要选择集合的内容,请在查询中引入一个 id 变量:

    select u.name, tr.amount from Users u JOIN u.transactions tr

    【讨论】:

    • 在哪里使用 id 属性?
    • tr 是事务集合的 id 变量,就像 u 是用户的变量
    猜你喜欢
    • 2018-01-26
    • 2010-11-13
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2017-07-18
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多