3个表之间的HQL多对多
HQL many to many between 3 tables
我有 3 tables :
User ->>- 多对多 ->>- Userapp ->>- 多对多 ->>- 申请
用户有:
userId
用户名
用户应用程序 :
userId
applicationId
申请:
applicationId
应用程序名称
我没有成功创建一个 HQL 查询,returns 一个特定用户的每个应用程序。
我的总部:
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
当我从数据库创建休眠映射文件和 POJO 时,它为我创建了 2 个对象:用户和应用程序。但不是关联 table "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>
此致
我认为你的查询应该是这样的:
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 = ?
我有 3 tables :
User ->>- 多对多 ->>- Userapp ->>- 多对多 ->>- 申请
用户有:
userId
用户名
用户应用程序 :
userId
applicationId
申请:
applicationId
应用程序名称
我没有成功创建一个 HQL 查询,returns 一个特定用户的每个应用程序。
我的总部:
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
当我从数据库创建休眠映射文件和 POJO 时,它为我创建了 2 个对象:用户和应用程序。但不是关联 table "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>
此致
我认为你的查询应该是这样的:
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 = ?