指定应考虑进行不同计算的列
Specfiy columns which should be considered for distinct calculation
我正在使用 javax.persistence.criteria.CriteriaBuilder
and javax.persistence.criteria.CriteriaQuery
来 select 一些实体。
我现在只想 select 应该由特定列指定的唯一实体。
有一种方法 javax.persistence.criteria.CriteriaQuery#distinct
只有 returns 个唯一实体。
我宁愿需要像
这样的东西
CriteriaQuery<T> distinct(String... columnNames)
你知道我如何在我的 JPA 中烘焙这样一个独特的东西吗CriteriaQuery
?
似乎可以 Hibernate.
distinct 接受一个布尔值作为参数。您可以使用 multiselect 到 select 多个列,如本例所示:
CriteriaQuery<Country> q = cb.createQuery();
Root<Country> c = q.from(Country.class);
q.multiselect(c.get("currency"), c.get("countryCode")).distinct(true);
下面的语句没有意义:
I now want to select only the entities that are unique which should be
specified by a certain column.
如果结果集是 'exactly the same',则结果集按 'distinct' 筛选。
如果只有一些字段相同,则实体不相同。
您可以通过以下方式在结果集上创建不同的子句:
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 的唯一组合。
例如...'Give me all unique combinations from my Friends where the firstName and lastName of the friend is unique.'但这并不意味着给我独特的朋友。
我正在使用 javax.persistence.criteria.CriteriaBuilder
and javax.persistence.criteria.CriteriaQuery
来 select 一些实体。
我现在只想 select 应该由特定列指定的唯一实体。
有一种方法 javax.persistence.criteria.CriteriaQuery#distinct
只有 returns 个唯一实体。
我宁愿需要像
这样的东西CriteriaQuery<T> distinct(String... columnNames)
你知道我如何在我的 JPA 中烘焙这样一个独特的东西吗CriteriaQuery
?
似乎可以 Hibernate.
distinct 接受一个布尔值作为参数。您可以使用 multiselect 到 select 多个列,如本例所示:
CriteriaQuery<Country> q = cb.createQuery();
Root<Country> c = q.from(Country.class);
q.multiselect(c.get("currency"), c.get("countryCode")).distinct(true);
下面的语句没有意义:
I now want to select only the entities that are unique which should be specified by a certain column.
如果结果集是 'exactly the same',则结果集按 'distinct' 筛选。 如果只有一些字段相同,则实体不相同。
您可以通过以下方式在结果集上创建不同的子句:
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 的唯一组合。
例如...'Give me all unique combinations from my Friends where the firstName and lastName of the friend is unique.'但这并不意味着给我独特的朋友。