Jpa namedquery with left join fetch

use*_*520 5 java annotations hibernate jpa named-query

这是我的命名查询:

@NamedQuery(name ="User.findOneWithLists",query ="SELECT u FROM User u"+"LEFT JOIN FETCH u.aTemplates"+"LEFT JOIN FETCH u.bTemplates"+"LEFT JOIN FETCH u.bp"+"LEFT JOIN FETCH u.aCredentials"+"LEFT JOIN FETCH u.st WHERE(st.deleted = false)"+"LEFT JOIN FETCH u.bCredentials"+"LEFT JOIN FETCH u.cl"+"WHERE u.id =:id ")

我的问题是,当应用程序启动时出现错误:

org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:LEFT ....

在st侧有一个注释

@ManyToOne
 @JoinColumn(name = "st_user")
 private User user;
Run Code Online (Sandbox Code Playgroud)

任何想法如何处理这个where子句?

Rom*_*n C 7

检查一个SQL语法,你不能使用left joinafter where子句.如果您正在查看命名查询的SQL生成表单,您将看到查询中的连接表在where连接之后出现,并且应该指定通过键链接这些表的相等条件.左侧主表的主键和右侧连接表的外键.连接表由多对一关联的属性指定.

@NamedQuery(
    name = "findOneWithLists",
    query = "from Table t left join User u where u.id= :id"
)
Run Code Online (Sandbox Code Playgroud)