首页 > 解决方案 > Jpa标准api中空结果的通用假查询

问题描述

在遗留代码中,我有以下内容:

public class NoFilter<T> implements FilterClause{
Class entityClass;
public NoFilter(Class aClass)
{
    entityClass = aClass;
}

@Override
public CriteriaQuery query4Data(EntityManager em ) {
    javax.persistence.criteria.CriteriaBuilder cb = em.getCriteriaBuilder();
    javax.persistence.criteria.CriteriaQuery cq = cb.createQuery();
    javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
    cq.select(rt);
    return cq;
}
}

执行查询它返回所有未过滤的请求类型的实体。

我需要一个总是返回一个空列表的假查询。不能在where子句中写入与特定实体相关的任何内容,因为它应该对所有实体类型都有效。不知道如何在 JPA 标准 Api 中编写它。

不能使用limit关键字将结果限制为 0。

我想要达到的结果与执行 Mysql 得到的结果相同

SELECT * FROM users where 0>1;

标签: jpacriteria-api

解决方案


推荐阅读