gpt4 book ai didi

java - 在 JPA 中的各个列上使用 DISTINCT 关键字

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:17 24 4
gpt4 key购买 nike

我正在从数据库中读取一些非常不规范化(我无法控制)的值。该调用检索大学院系的公告,如果用户在多个院系(这是可能的),则会为这些用户多次返回相同的结果。但是,有些部门可能有不同的公告,有些部门则相同。

有没有办法让我在 JPA 中的各个列上使用 DISTINCT 关键字?这是我目前的查询:

String jpql = "SELECT DISTINCT annoucement FROM Announcment announcement "
+ "WHERE (announcement.date <= :now AND announcement.endDate >= :now) "
+ "AND announcement.approved = true AND announcement.departmentId IN (:departmentIDs)";

TypedQuery<Announcement> query = entityManager.createQuery(jpql,
Announcement.class);
query.setParameter("now", new Date());
query.setParameter("departmentIDs", departmentIDs);

departmentID 值可能不同,但公告、日期等都是相同的。此查询返回具有重复值的公告。

最佳答案

我提出问题的两种方式:

  1. "选择不同的 annoucement.x, annoucement.y, annoucement.z ...(没有 depId)来自..."

    然后构造一个公告。但是你丢失了持久对象及其引用。你必须加载它们如果需要,可以再次使用您的 Dao 对象。

  2. 在你的 Annoucement 类中覆盖 equals() [hashCode() too]当然,在equals()中,depId应该是不在比较范围内的。得到列表,然后将列表转换为 Set。你得到了“不同”对象

希望对你有帮助

关于java - 在 JPA 中的各个列上使用 DISTINCT 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com