2013-05-21 59 views
0

我試圖在我的實體中創建一個查詢。如何使用jpa進行這個sql查詢?

我在MySQL數據庫這些下表:

Categorie : id, nom ... 

Article : num_code_barre_, categorie ... 

在我的實體種類:

... 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "id") 
private Integer id; 
@Size(max = 30) 
@Column(name = "nom") 
private String nom; 

... 

在我的實體文章:

... 

@Id 
@Basic(optional = false) 
@NotNull 
@Size(min = 1, max = 50) 
@Column(name = "num_code_barre_") 
private String numCodeBarre; 
@Basic(optional = false) 
@NotNull 
@Column(name = "categorie") 
private int categorie; 

... 

我已經測試過這個sql查詢在我的數據庫中,這是工作:

SELECT c.nom , COUNT(a.numCodeBarre) FROM categorie c INNER JOIN article a ON c.id =  a.categorie GROUP BY a.categorie 

但是當我嘗試在我categorie實體創建一個namedQuery我收到一個錯誤在我的輸出:「Synthax錯誤解析查詢......」

@NamedQuery(name = "Categorie.count", query = "SELECT c.nom , COUNT(a.numCodeBarre) FROM categorie c INNER JOIN article a ON c.id = a.categorie GROUP BY a.categorie") 

有人有一個想法,我該怎麼辦它呢?

回答

1

「ON」不是從JPA 1.0或JPA 2.0條款JPQL的一部分。它僅在JPA 2.1中引入,我懷疑你正在使用它,因爲沒有完全發佈

0

我不知道爲什麼你的SQL是造成synthax錯誤,但你可以試試這個JPQL聲明:

@NamedQuery(name = "Categorie.count", query = "SELECT c.nom , COUNT(a.numCodeBarre) FROM categorie as c, article as a WHERE c.id = a.categorie GROUP BY a.categorie")