Hibernate 根据关联实体列表选择实体

Hibernate 根据关联实体列表选择实体,hibernate,hql,Hibernate,Hql,我有以下数据库架构: 两个表,书籍和标签,具有n-m关系 书籍-标签 例如,我们可以有带标签{A,B,C}的书1,和带标签{A}的书2 我想根据标签列表选择书籍 例如:所选标记列表:{A,B} ->第一册 我的想法是使用减号SQL函数,将book tags列表减去selected tags列表,如果列表为空,则返回book。不幸的是,HQL不支持此SQL函数 你知道吗?1/我会尝试另一种方法,比如: from book where book.id in ( select b

我有以下数据库架构:

两个表,书籍和标签,具有n-m关系

书籍-标签

例如,我们可以有带标签{A,B,C}的书1,和带标签{A}的书2

我想根据标签列表选择书籍

例如:所选标记列表:{A,B} ->第一册

我的想法是使用减号SQL函数,将book tags列表减去selected tags列表,如果列表为空,则返回book。不幸的是,HQL不支持此SQL函数


你知道吗?

1/我会尝试另一种方法,比如:

from
  book 
where
  book.id in (
  select
    b.id
  from
    book b
  where
    b.tags.name in (?)
  group by
    b.id
  having
    count(b.tags.id) = ?
)
参数: 首先标签列表 第二个标记列表大小 我认为我的hql中使用的所有函数都是受支持的。 如果不需要整个对象,而只需要book的一个属性(如id),则可以删除外部选择 2/如果您喜欢您的查询,您仍然可以使用sql查询,请参阅第16.2节