我有3张桌子:
用户 - >> - 多对多 - >> - Userapp - >> - 多对多 - >> - 应用
用户有:
用户id
的userName
UserApp :
用户id
的applicationID
Applicaiton :
的applicationID
applicaitonName
我没有成功创建一个HQL查询,该查询返回一个特定用户的每个应用程序。
我的HQL:
select a.userId, a.userName from Application b join b.userId a where b.userId = 1
简化我想做的查询:from Application WHERE Userapp.userID = 1
编辑:
我的工具:
Netbean 8.x
Hibernate插件
第二个错误:org.hibernate.hql.internal.ast.QuerySyntaxException: Userapp is not mapped
当我从数据库创建hibernate映射文件和POJO时,它创建了2个对象:User和Application。但不是关联表" Userapp"
我的hibernate.reveng.xml:
<hibernate-reverse-engineering>
<schema-selection match-catalog="allin"/>
<table-filter match-name="user"/>
<table-filter match-name="application"/>
<table-filter match-name="userapp"/>
</hibernate-reverse-engineering>
问候
答案 0 :(得分:1)
我认为你的查询应该是这样的:
SELECT a.applicaitonName
FROM User u
LEFT JOIN UserApp ua ON u.userId= ua.userId
LEFT JOIN Application a On ua.applicationId= a.applicationId
WHERE
u.userName = ?
或
SELECT a.applicaitonName
FROM UserApp ua
LEFT JOIN Application a On ua.applicationId= a.applicationId
WHERE
ua.userId = ?