2015-07-13 72 views
1

我得到一個QuerySyntaxException試圖對2臺運行HQL查詢:休眠QuerySyntaxException - 現場沒有映射

select p from ProductEntity p join p.categories c, p.productType t where c.name = :category and t.name = :type 

唯一的例外是:

org.hibernate.hql.internal.ast.QuerySyntaxException: p.productType is not mapped 

我的實體成立,所以我認爲一切都被映射:

Product Entity: 

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "PRODUCT_TYPE_ID", nullable = false) 
private ProductTypeEntity productType; 

Product Type Entity: 

@OneToMany(fetch = FetchType.LAZY, mappedBy = "productType") 
private Set<ProductEntity> products = new HashSet<ProductEntity>(0); 

我想選擇一個類別o f'x'和產品類型'y'。

產品有一組類別,它也有單一類型,儘管某種類型可以應用於許多產品。

任何人都可以看到我的查詢有什麼問題嗎?

回答

2

我想你在p.productType t之前缺少join關鍵字。

因此,查詢應該是:

select p from ProductEntity p join p.categories c join p.productType t where c.name = :category and t.name = :type 

後來編輯:刪除逗號後p.categories c

+0

我已經試過了:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的標記:加盟在第1行第94列 – berimbolo

+0

哦,請在c後刪除'逗號' –

+0

謝謝,我不能相信它只是逗號:( – berimbolo