休眠条件子查询限制



我有一个条件查询和一个子查询,我想将条件查询的限制应用于子查询。以下是我迄今为止所做的尝试。

CriteriaQuery<Object> query = cb.createQuery(Object.class);
Root<Entity1> entityRoot = query.from(Entity1.class);
List<Predicate> conditions = new ArrayList<>();
conditions.add(cb.equal(entityRoot.get("relatedEntity").get("id"), 2));
conditions.add(cb.or(cb.isNull(entity1Entity2Join.get("columnName")), cb.equal(entity1Entity2Join.get("columnName"), true)));
query.where(conditions.toArray(new Predicate[]{})).distinct(true);
//Subquery
Subquery<Object> subQuery = cb.createQuery().subquery(Object.class);
subQuery.where(query.getRestriction()); // I want to apply the criteria query restrictions here but Hibernate is throwing exception of invalid path.

任何想法都将不胜感激。

通常情况下,您会得到该错误,并且操作是正确的,最后您试图在子查询的where中建立一个新查询的一些条件,但您没有对其进行任何定义,要解决它,请尝试更改这一行

Subquery <Object> subQuery = cb.createQuery().subquery(Object.class);

对于这个

Subquery <Object> subQuery = query.subquery(Object.class);

从您已经创建的查询创建子查询,而不是从这个创建新查询和子查询

最新更新