【问题标题】:How to do a exists query on many to many relationships如何对多对多关系进行存在查询
【发布时间】:2018-01-08 14:07:36
【问题描述】:

我有这个问题:

SELECT * 
FROM   A a 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   AB m 
                   WHERE  m.a_id = a.id 
                          AND EXISTS (SELECT 1 
                                      FROM   B b 
                                      WHERE  m.b_id = b.id 
                                             AND b.TYPE = 'C')) 

我需要用 Hql 写这个。

我已经在AEntity 和BEntity 类中映射了多对多关系,这样AEntity 具有linkedBs 和BEntity 具有linkedAs

我想要一个不那么冗长的查询版本。

编辑

问题是我们没有表AB 的任何休眠实体,因为它只是一个JoinTable。所以请提供一种在不显式使用表 AB 的情况下编写此查询的方法。

【问题讨论】:

  • 请发布数据集和希望的结果集

标签: java sql database hibernate hql


【解决方案1】:

试试这个:

您可以在 entityA 和 entityB 之间使用笛卡尔积,然后检查中间表中是否存在这对夫妇

SELECT a
FROM entityA a, entityB b
WHERE NOT EXISTS(
    SELECT 'couple'
    FROM ab m
    WHERE m.id = a.id AND m.id = b.id)

【讨论】:

  • 那不会给我同样的结果
猜你喜欢
  • 2019-03-28
  • 1970-01-01
  • 2013-08-28
  • 2021-09-08
  • 2016-12-15
  • 2017-02-02
  • 1970-01-01
  • 2021-10-06
相关资源
最近更新 更多