我需要一个棘手的hibernate查询问题的帮助。我有以下实体:
public class Book { private String bookId; private String author; private String isbn; private Set<Tag> tags; // getters, setters etc. }
和
public class Tag { private String tagId; private String tagName; // getters, setters, etc. }
两者之间存在多对多关联,这由联接表books_tags_mn和book_id和tag_id列表示。
我喜欢做的事情是:我要创建一个Hibernate查询/标准查询,返回所有的书,有 所有的 一组特定的标签。什么工作是选择具有所有书籍 的任何 一组的标签。
我一直在使用标准API,但并没有真正理解它。所以我想做的事(使用伪HQL)
from Book book where book.tags containsAll(:tags)
在此方面的任何帮助将不胜感激,因此,非常感谢您。
您可以使用以下查询:
select book from Book book where :numberOfTags = (select count(tag.id) from Book book2 inner join book2.tags tag where book2.id = book.id and tag in (:tags))
这里numberOfTags是标签在组标签必须匹配的数量。
numberOfTags