当前位置: 首页 > 面试题库 >

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

柳均
2023-03-14
问题内容

我正在从可怕的非标准化(我无法控制)的数据库中读取一些值。该呼叫检索大学部门的公告,并且如果一个用户在多个部门中(可能的话),则这些用户将多次返回相同的结果。但是,有些部门可能有不同的公告,而有些部门却有相同的公告。

有没有办法让我在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对象再次加载它们。

  1. 当然,在您的Annoucement类中重写equals()[hashCode()也是],在equals()中,depId应该不在比较之内。像您一样获取列表,然后将列表转换为Set。你有“不同”的对象

希望能帮助到你



 类似资料:
  • 问题内容: 我很好奇,是否有任何一种方法可以在Django中进行查询,而该查询并非位于下方。我正在尝试执行。 具体来说,我有一个看起来像这样的模型: 其中是内的排名。我希望能够遍历所有类别,对该类别中的每个等级进行一些操作。 我想先获取系统中所有类别的列表,然后查询该类别中的所有产品,然后重复进行直到处理完每个类别。 我宁愿避免使用原始SQL,但是如果我必须去那里,那很好。尽管我以前从未在Djan

  • 主要内容:语法,实例SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。 有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。 语法 用于消除重复记录的 DISTINCT 关键字的基本语法如下: 实例 假设 COMPANY 表有以下记录: 首先,让我们来

  • 主要内容:语法在 T-SQL 中,DISTINCT 关键字与 SELECT 语句一起使用以消除重复记录并仅给出唯一记录值。 下面是表中有很多重复记录的情况。当我们获取记录时,只用唯一的记录值代替重复的记录值更有意义。 语法 DISTINCT 关键字的语法如下: 例子: EMPLOYEES 表中有以下记录: 下面来看看 SELECT 查询如何返回重复的工资记录。 执行上面查询语句,得到以下结果 - 注意:此命令生

  • 我有一个奇怪的怪癖,当我运行一个nativeQuery调用单个列中的所有不同值时,我没有得到任何结果。然而,当我从查询中删除“distinct”操作符时,它的工作非常好,告诉我这不是数据库连接或内容问题。 控制器方法: 显然,我可以编写一个“distinct”方法来遍历这个列表,但对我来说,查询不起作用似乎很奇怪 编辑:在备注中请求的存储库和实体类中添加 资源库接口: 创建和修改表的SQL

  • 问题内容: 我有一个名为“ Group”的实体类,NetBeans警告我“实体表名称是保留的Java Persistence QL关键字”。 类似的情况是使用保留的SQL关键字。 这个名字会被转义吗?使用其他表名可以解决@Table(name =“ otherName”)的问题。还是应该重命名课程? 问题答案: 这个名字会被转义吗? 有 没有 在JPA规范是这么说的,如果您的提供商做,这是供应商特

  • 我和Spring Boot一起建立了一个Rest服务。我一直使用Spring Data JPA进行查询,但我愿意接受任何有助于解决我的问题的东西。 我想在任何列中查找数据库中具有匹配字符串的所有条目。 类似于以下内容:或 我有一个拥有近20个属性的实体,因此我希望避免在搜索中写入所有列名称。 我怎么能这样做?