2015-10-19 94 views
3

考慮實體的Hibernate查詢

@Entity 
class Book{ 
    ... 
    @ElementCollection(fetch = FetchType.EAGER) 
    List<String> tags = new ArrayList<String>(); 
    ... 
} 

應該是什麼Hibernate查詢這樣一個可以得到含任意多個標籤「哈比人,夏洛克,小說」的所有書籍(OR操作以逗號分裂)。任何查詢(HQL,Criteria或原始SQL)都可以工作,但Criteria是首選。

回答

2

我自己解決了這個問題,但沒有使用純粹的標準

criteria.add(Restrictions.sqlRestriction("BOOK_ID IN " + 
      "(SELECT BOOK_ID FROM Book_tags " + 
      "WHERE tags ='" + tag + "')")); 

請注意周圍的查詢參數「標籤」。純的條件查詢總是歡迎的單引號。