我正在使用 javax.persistence.criteria.CriteriaBuilder
和 javax.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/