java - 指定应考虑进行不同计算的列

标签 java jpa distinct criteria criteria-api

我正在使用 javax.persistence.criteria.CriteriaBuilderjavax.persistence.criteria.CriteriaQuery选择一些实体。

我现在只想选择应由特定列指定的唯一实体。

有方法 javax.persistence.criteria.CriteriaQuery#distinct它只返回唯一的实体。

我宁愿需要类似的东西

CriteriaQuery<T> distinct(String... columnNames)

你知道我如何在我的 JPA CriteriaQuery 中烘焙这样一个 distinct 吗?

Hibernate. 似乎是可行的

最佳答案

下面的语句没有意义:

I now want to select only the entities that are unique which should be specified by a certain column.

如果结果集“完全相同”,则按“不同”过滤。 如果只有一些字段相同,则实体不相同。

您可以通过以下方式在结果集上创建不同的子句:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery query = builder.createQuery();
Root<Friend> c = query.from(Friend.class);
query.multiselect(c.get(Friend_.firstName),c.get(Friend_.lastName)).distinct(true);

然后您将从 Friend 实体中获得 firstName 和 lastName 的唯一组合。

例如...“给我所有来 self friend 的唯一组合,其中 friend 的名字和姓氏是唯一的。”但这并不意味着给我独一无二的 friend 。

关于java - 指定应考虑进行不同计算的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159151/

相关文章:

java - 存储批处理作业的密码

java - 通过代码追踪

java - 正确删除 JPA 中帖子的评论

java - Hibernate 或 JPA 中的 `SELECT COUNT(*) FROM (SELECT DISTINCT ...)`

java - 仅使用 Java 编译和解释 JSP

java - JPA 为什么返回 2 个对象的查询不起作用而返回 1 个对象的查询工作正常

java - 如何使用 Spring Data JPA 将列的新旧值保存到 Audit 表中

hibernate - 如何在 HQL 中创建不同查询

php - 优化查询 - 如何选择最高和最低行,从日期时间列中按日期分组并返回数组

java - 如何让我的程序返回 -1/4 而不是 1/-4?