3个表之间的HQL多对多

HQL many to many between 3 tables

我有 3 tables :

User ->>- 多对多 ->>- Userapp ->>- 多对多 ->>- 申请

用户有:

用户应用程序 :

申请

我没有成功创建一个 HQL 查询,returns 一个特定用户的每个应用程序。

我的总部:

select a.userId, a.userName from Application b join b.userId a where b.userId = 1

简化我想做的查询:from Application WHERE Userapp.userID = 1

你能帮我吗:)?

编辑:

我的工具:

第二个错误: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 = ?