这是我的namedquery:
@NamedQuery(name =“ User.findOneWithLists”,查询=“从用户u中选择u” +“左联接FEACH u.aTemplates” +“左联接FE.bTemplates” +“左联接FE.bp” +“左JOIN FETCH u.aCredentials“ +” LEFT JOIN FETCH u.st(st.deleted = false)“ +” LEFT JOIN FETCH u.bCredentials“ +” LEFT JOIN FETCH u.cl“ +” WHERE u.id =:id ”)
我的问题是,应用程序启动时出现错误:
org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:LEFT…。
在侧面有一个注释
@ManyToOne @JoinColumn(name = "st_user") private User user;
知道如何处理where子句吗?
检查SQL语法,您不能使用left joinafter where子句。如果查看的是由SQL生成的名为query的表单,您将看到查询中的联接表where子句在联接之后出现,并应指定相等条件,通过键将这些表链接起来。主表的主键在左侧,而联接表的外键在右侧。联接表由多对一关联的属性指定。
left join
where
@NamedQuery( name = "findOneWithLists", query = "from Table t left join User u where u.id= :id" )