mysql - 使用 Hibernate HQL 的嵌套查询

标签 mysql database hibernate jakarta-ee hql

我想在这样的 hql 查询中包含一个嵌套的 select from:

Query query1 = session.createQuery("from Component where ( AC_ID IS NULL) AND ( WIP_ID IS NOT NULL ) AND ( SELECT USER_ID FROM WorkInProcess WHERE WIP_ID  = 'WIP_ID' IS NULL)  ");

我如何使用 hibernate hql 查询实现此目的。

谢谢

最佳答案

根据给出的最少信息,我会说有两个类 Component.class 和 WorkInProcess.class。我猜 WIP_ID 是 WorkInProcess.class 的外键。您可以使用以下 hql 查询或基于分离条件的查询来实现它:

session.createQuery("from Component m where m.AC_ID is NULL and WIP_ID IS NOT NULL and m.USER_ID IN (" +
                "select e.USER_ID from WorkInProcess e where e.WIP_ID:=wip_id) is null").setParameter("wip_id", wip_id).uniqueResult();

DetachedCriteria Query1 = DetachedCriteria.forClass(WorkInProcess.class);
                           Query1.add(Restrictions.eq("WIP_ID", WIP_ID));

Criteria Query2 = session.createCriteria(Component.class);
                  Query2.add(Restrictions.isNull("AC_ID"));
                  Query2.add(Restrictions.isNotNull("WIP_ID"));
                  Query2.add(Property.forName("USER_ID").eq(Query1));

请引用:hql-and-nested-queries

关于mysql - 使用 Hibernate HQL 的嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47179918/

相关文章:

mysql - SQL 查找列为 LIKE 的行

mysql - 可以将自动递增变量添加到mysql中GROUP BY的行结果中吗?

mysql - 使用 RMySQL、R 和 MySQL 连接到数据库

android - sqlite 忽略我的外键约束

php - yajra/laravel-datatables 搜索不适用于 laravel 5.7

Mysql 填补日期空白

mysql - phpMyadmin 数据库导入错误 #1046 - 没有选择数据库

java - not-null 属性引用 null 或 transient 值 : com. project.test.entity.Stamp.createdAt

java - jpa (Hibernate) 中具有重复行的结果集

mongodb - 将MongoDB和Hibernate结合使用的Grails 3.3.0 M1和3.3.0 M2失败