【发布时间】:2020-06-24 15:08:44
【问题描述】:
我以这种方式定义了多个 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
【问题讨论】:
标签: sql hibernate jpa naming reserved-words