Hibernate - 加入的路径

问题描述 投票:0回答:1

我有这样的hibernate查询

SELECT t FROM User t JOIN UserRole u ON t.username = u.username WHERE t.username=:username AND t.password =:pass AND u.userRole =:ust

但是这个查询不起作用Error

错误:加入的路径!错误:加入的路径!加入的路径!在org.hibernate.hql.internal.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:385)在org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3903)在org.hibernate.hql.internal org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause上的org.hibernate.hql.internal.antlr.HqlSaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)中的.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3689)(HqlSqlBaseWalker)的.java:708)在org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)在org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)在有机hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)在org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)在org.hibernate.hql.internal.ast。在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslato)的QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206) rImpl.java:158)在org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPlan.java:131)在org.hibernate.engine.query.spi.HQLQueryPlan。(HQLQueryPlan.java:93)在org.hibernate作为.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)在org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)在org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236 )在org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)在com.nepitc.mshandloomfrabics.daoimp.UserDAOImp.login(UserDAOImp.java:40)在com.nepitc.mshandloomfrabics.service.UserService.login( UserService.java:74)at com.nepitc.mshandloomfrabics.controller.AuthorizationController.login(AuthorizationController.java:38)

我该怎么写得正确

hibernate
1个回答
1
投票

在JPQL / HQL中,您不需要为连接指定ON子句,因为Hibernate已经知道两个实体之间的映射以及生成所述连接所需的列。

所以你真的只需要提供谓词和执行连接的请求,如下所示

SELECT u FROM User u 
  JOIN u.roles ur
 WHERE u.username = :username
   AND u.password = :password
   AND ur.userRole = :role
© www.soinside.com 2019 - 2024. All rights reserved.