我有这样的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)
我该怎么写得正确
在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