2015-05-09 53 views
1

我的工具:關聯表沒有映射 - 休眠+ netbeans的

  • Netbeans的8.x的
  • Hibernate插件
  • PHP我的管理

enter image description here

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來自數據庫

當我創建Hiber從數據庫映射文件和Pojors,它創建了2個新聞對象:ApplicationUser。但不是Userapp ...

我必須手動創建它嗎?

enter image description here

這裏hibernate.reveng.xml中(有什麼奇怪的,UserApp是布蘭克寫而不是像灰色的用戶和應用程序:

enter image description here

<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

這樣的映射表通常不會被Hibernate顯式映射,而只會被一個ManyTo隱式地映射許多映射。因此,你的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