我以此方式定义了多个JPA命名查询:
SELECT group FROM FOO_Group group WHERE group.valid = :valid ORDER BY group.date
尽管group
是SQL中的保留关键字,但它似乎永远不会困扰Hibernate。
但是,现在,我必须定义一个连接两个表的命名查询:
SELECT group FROM FOO_User user JOIN user.group group WHERE group.valid = :valid ORDER BY group.date
这一次查询失败,并且Hibernate指出应该使用BY
(如GROUP BY
),但是找到了WHERE
。
我知道使用保留关键字作为列,表或实体名称通常是一个坏主意。但是我想知道为什么它不会在我的旧查询中造成任何麻烦,但是现在却在加入查询。是否有语法允许我在新查询中使用group
?我尝试了JOIN user.group AS group
,但效果不理想。
现在,我所能做的就是重命名标识符:
SELECT g FROM FOO_User user JOIN user.group g WHERE g.valid = :valid ORDER BY g.date