考虑一个实体
@Entity
class Book{
...
@ElementCollection(fetch = FetchType.EAGER)
List<String> tags = new ArrayList<String>();
...
}
什么应该是hibernate查询,这样才能获得包含任何多个标记的所有书籍&#34; hobbit,sherlock,fiction&#34;(或者用逗号分割的操作)。任何查询(HQL,Criteria或raw SQL)虽然会优先考虑标准,但是会有效。
答案 0 :(得分:2)
我自己解决了这个问题,但没有使用纯粹的标准
criteria.add(Restrictions.sqlRestriction("BOOK_ID IN " +
"(SELECT BOOK_ID FROM Book_tags " +
"WHERE tags ='" + tag + "')"));
请注意查询参数&#39;标记&#39;周围的单引号.Pure标准查询总是受欢迎。