我正在尝试将使用JPA 1.0和Hibernate 3.3(是的,真的旧)的旧代码迁移到不同的(非SQL)数据API。其中一个查询看起来像这样:
SELECT tx.transactionId, MAX(tx), SUM(tx.amount)
FROM Transaction tx
WHERE tx.customerId = :customerId
AND ... // etc
GROUP BY tx.transactionId
我的问题: MAX(tx)
的结果应该是什么?我看到的所有文档都声称MAX
仅对可比较的标量值有效(数字,字符串,日期),而不是实体引用。从上下文来看,查询实际上返回Transaction
的实例,但我不知道这些实例是什么(特定的持久化实体?某种类型的复合实体?)或它们与分组结果集的关系。
这是规范的一些Hibernate扩展吗?我在Hibernate文档中也找不到任何东西,而且我无法在Hibernate源代码中找到处理该特定行为的代码。我实际上并不关心(因为我必须以不同的方式重写整个电话),我只是想知道更换应该做什么。
有人认识到这一点吗?