[英]HQL query join tables
我正在使用hibernate連接到我的數據庫以獲得項目。
我想要一個查詢,使用特定語言的描述和名稱從我的數據庫中獲取產品。 我所擁有的參數是該語言的簡稱,因此首先我必須獲取該語言的id,然后獲取所需語言的文本。
我嘗試了以下hql查詢,但沒有成功。
from Products as p
where p.productlanguages.languages.shortname like 'eng'
這是數據庫中應該來自的部分的圖像:
我有一個sql查詢所需的結果,但我似乎無法讓它在hibernate中工作。 但我更喜歡在hql中這樣做。
SELECT * FROM products p
INNER JOIN productlanguage pl ON pl.Products_id = p.id
WHERE pl.Languages_id =
(
SELECT id FROM languages
WHERE Shortname = 'eng'
);
誰能告訴我如何構建這個hql查詢? 謝謝。
試試以下:
from Products p INNER JOIN p.productlanguages pl
where pl.languages.shortname ='eng'
我假設您已將Product-Productlanguages
關系映射為OneToMany
和Productlanguages-Langages
ManyToOne
關系為ManyToOne
,如ER圖中所示。
編輯:在public Languages getLanguages() {barcode
,最后刪除barcode
行中的Productlanguage
映射中似乎存在拼寫錯誤。
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Languages_id", nullable=false, insertable=false, updatable=false)
public Languages getLanguages() {barcode
return this.languages;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.