关联 table 未映射 - Hibernate + netbeans

Associative table not mapped - Hibernate + netbeans

我的工具:

HQL 查询:

SELECT a.applicaitonName
FROM UserApp ua
    LEFT JOIN Application a On ua.applicationId= a.applicationId
WHERE
    ua.userId = 1

错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: Userapp is not mapped [SELECT a.applicaitonName
FROM Userapp ua
    LEFT JOIN Application a On ua.applicationId= a.applicationId
WHERE
    ua.userId = 1]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)

我是如何做到的:

当我从数据库创建 Hibernate 映射文件和 Pojors 时,它创建了 2 个新闻对象:ApplicationUser。但不是 Userapp ...

我必须手动创建吗?

这里是 hibernate.reveng.xml(有点奇怪,UserApp 是用空白写的,而不是像 User 和 Application 那样用灰色写的:

<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>

感谢您的帮助!!

这样的映射 table 通常不会被 Hibernate 显式映射,而只能被 ManyToMany 映射隐式映射。因此,您的 HQL 语句应该看起来像这样

SELECT a.applicationName
FROM User u left join u.applications as a
WHERE u.userId = 1

我不知道应用程序的正确 属性 名称是什么...您应该可以在源代码中查找它。

这里描述了如何在 HQL 中进行这种连接:https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins