我正在从可怕的非标准化(我无法控制)的数据库中读取一些值。该呼叫检索大学部门的公告,并且如果一个用户在多个部门中(可能的话),则这些用户将多次返回相同的结果。但是,有些部门可能有不同的公告,而有些部门却有相同的公告。
有没有办法让我在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值可能不同,但是通知,日期等都相同。此查询返回具有重复值的公告。
我提出您问题的两种方法:
然后构造一个公告。但是您丢失了持久对象及其引用。您必须根据需要通过Dao对象再次加载它们。
希望能帮助到你