2011-11-20 91 views
0

我與JPA查詢實驗,但保持在下面的查詢得到一個錯誤JPA連接查詢的問題

SELECT p 
FROM usertype_permissions up 
JOIN permissions p ON up.PERMISSION_ID = p.ID 
WHERE up.USERTYPE_ID = 1 

錯誤:

Caused by: java.lang.IllegalArgumentException: An exception occurred while 
creating a query in EntityManager: 

Exception Description: Syntax error parsing the query 
[SELECT p 
FROM usertype_permissions up 
JOIN permissions p ON up.PERMISSION_ID = p.ID 
WHERE up.USERTYPE_ID = 1]. 

回答

0

在JPQL你必須使用實體名稱(默認情況下它是Java類的名稱),對我來說它看起來很奇怪,usertype_permissions是一個實體名稱/ Java類...

它看起來像你使用的表名和加入後的單詞必須引用例如類的屬性l.books

例子:

@Entity 
public class Lib implements Serializable { 
     @OneToMany 
     private Set<Book> books; 
} 

@Entity 
public class Book implements Serializable { 
     @OneToOne 
     private Lib lib; 
} 

JPQL查詢應該是這樣的:

SELECT l FROM Lib JOIN l.books books 
+0

usertype_permissions是不是一類,它的產生是因爲對多對多關係表... 哪有我從該表中獲取數據? – ThomasVdBerge

+0

我想你有一個類的用戶與權限對象的集合然後...我想你想獲得一個用戶的權限? 然後只是做:選擇u.permissions從用戶u其中u.id = 1 –