2010-04-27 57 views
1

我有以下數據庫模式:根據關聯實體列表選擇實體

兩張表,書和標籤,具有n-m關係。

書籍-標籤

我們可以有例如書1,用標記{A,B,C},和書2,用標記{A}。

我想根據標籤列表選擇書籍。

例如:選擇的標籤列表:{A,B} - >書1

我的想法是使用減號SQL函數,減去書標籤列表中選擇標籤列表,並返回書如果列表是空的。不幸的是,這個SQL函數不被HQL支持。

對此有何想法?

回答

0

1 /我想嘗試另一種方法,這樣的事情:

from 
    book 
where 
    book.id in (
    select 
    b.id 
    from 
    book b 
    where 
    b.tags.name in (?) 
    group by 
    b.id 
    having 
    count(b.tags.id) = ? 
) 
  • 參數:
    • 第一? :標籤清單
    • 秒? :標籤列表大小
  • 我認爲我的hql中使用的所有函數都受支持。
  • 如果您不需要整個對象,但像書的ID只有一個屬性,你可以刪除外選擇

2 /如果你喜歡你的查詢,你仍然可以使用SQL-一個查詢(見http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html第16.2節)。