加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在JPA中对各个列使用DISTINCT关键字

发布时间:2020-12-15 02:31:35 所属栏目:Java 来源:网络整理
导读:我正在从一个非常规范化的数据库中读取一些值(我无法控制).该调用检索大学部门的公告,如果用户在多个部门(可能),则对这些用户多次返回相同的结果.但是,有些部门可能会有不同的公告,而有些则有相同的公告. 有没有办法在单独的列上使用JPA中的DISTINCT关键字?
我正在从一个非常规范化的数据库中读取一些值(我无法控制).该调用检索大学部门的公告,如果用户在多个部门(可能),则对这些用户多次返回相同的结果.但是,有些部门可能会有不同的公告,而有些则有相同的公告.

有没有办法在单独的列上使用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值可能不同,但公告,日期等都是相同的.此查询返回具有重复值的公告.

解决方法

我提出两个问题的方法:

>“选择明确的annoucement.x,annoucement.y,annoucement.z
????…(没有depId)……“

然后构建公告.但是你
丢失了持久对象及其引用.你必须加载它们
如果你需要,你的Dao对象再次出现.
>在Annoucement类中覆盖equals()[hashCode())
当然,在equals()中,depId应该不在比较之中.越来越
如你所做的那样,然后将列表转换为Set.你得到了
“不同”的对象

希望能帮助到你

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读