关联 table 未映射 - Hibernate + netbeans
Associative table not mapped - Hibernate + netbeans
我的工具:
- Netbeans 8.x
- 休眠插件
- PHP 我的管理员
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.cfg.xml
- 我创造了hibernate.reveng.xml
- 我从数据库创建了 Hibernate 映射文件和 Pojors
当我从数据库创建 Hibernate 映射文件和 Pojors 时,它创建了 2 个新闻对象:Application
和 User
。但不是 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
我的工具:
- Netbeans 8.x
- 休眠插件
- PHP 我的管理员
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.cfg.xml
- 我创造了hibernate.reveng.xml
- 我从数据库创建了 Hibernate 映射文件和 Pojors
当我从数据库创建 Hibernate 映射文件和 Pojors 时,它创建了 2 个新闻对象:Application
和 User
。但不是 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