Hibernate查询实体中的字符串列表

时间:2015-10-19 10:34:38

标签: java hibernate

考虑一个实体

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

什么应该是hibernate查询,这样才能获得包含任何多个标记的所有书籍&#34; hobbit,sherlock,fiction&#34;(或者用逗号分割的操作)。任何查询(HQL,Criteria或raw SQL)虽然会优先考虑标准,但是会有效。

1 个答案:

答案 0 :(得分:2)

我自己解决了这个问题,但没有使用纯粹的标准

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

请注意查询参数&#39;标记&#39;周围的单引号.Pure标准查询总是受欢迎。