2015-10-19 79 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 + "')")); 

请注意周围的查询参数“标签”。纯的条件查询总是欢迎的单引号。