java - 如何对多对多关系执行存在查询

标签 java sql database hibernate hql

我有这个问题:

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 中编写它。

我已经在 AEntityBEntity 类中映射了多对多关系,这样 AEntity 就有 linkedBsBEntitylinkedAs

我想要一个不太详细的查询版本。

编辑

问题是我们没有表 AB 的任何 hibernate 实体,因为它只是一个 JoinTable。因此,请提供一种无需显式使用表 AB 即可编写此查询的方法。

最佳答案

试试这个:

您可以在 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)

关于java - 如何对多对多关系执行存在查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48151991/

相关文章:

java - 泛型类型参数和方法调用

sql - Mysql语法帮助

asp.net - (0..1---*) 在实体关系图/实体数据模型 (.edmx) 中是什么意思

database - 为什么要把IP转成整数来存储呢?

php - 动态匹配多个类别的项目

java - Log4J 问题 -> [ fatal error ] :1:1: Content is not allowed in prolog

java - 时间复杂度理论与线性搜索的实际实验不匹配

java - 将 src 文件夹中的文件加载到阅读器中

sql - 如何在两个给定日期之间将一行拆分为多行?

.net - Sql数据类型numeric有什么优点?