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

如何使用JPA和Spring在列表中查找具有字段的不同行?

荆鸿畅
2023-03-14
问题内容

我正在使用Spring连接到数据库。我有一个接口扩展CrudRepository<People, Long>这是我想对执行该数据库查询:SELECT DISTINCT name FROM people WHERE name NOT IN UserInputSet。我更愿意在没有任何sql注释的情况下执行此操作,因此如果没有该注释就可以了NOT

有办法吗?我查看了Spring文档,但找不到任何内容(http://docs.spring.io/spring-
data/jpa/docs/current/reference/html/#repositories.query-methods.query-
creation

这是我的累,但没有用。

@Query("SELECT DISTINCT name FROM people WHERE name NOT IN (?1)")
List<String> findNonReferencedNames(List<String> names);

这是我得到的例外:

Error creating bean with name 'peopleRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List de.test.tasks.persistence.PeopleRepository.findNonReferencedNames(java.util.List)!

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: people is not mapped [SELECT name FROM people WHERE name NOT IN (?1)]

问题答案:

我终于能够找到一个没有@Query注释的简单解决方案。

List<People> findDistinctByNameNotIn(List<String> names);

当然,我得到了people对象,而不仅仅是Strings。然后,我可以在java中进行更改。



 类似资料:
  • 我想从JpaRepository收到一个不同标记字段的列表 列出标记 类似的东西: 上面的代码工作正常,但是我不喜欢使用@Query 但是方法名称、投影还是规范?... 这看起来像一个简单的问题,但是我不明白...

  • 问题内容: 我有这样的桌子 我想获得具有相同发明编号的订单数量总和 那就是想要这样的结果 我们如何编写mysql查询 问题答案: 利用聚合函数并根据进行分组。 GROUP BY子句

  • 我有两张桌子: 我需要从表1中选择记录,其中Value1或Value2不同于表1\u中用相同的键1、键2和键3详细描述的值1和/或值2的总和。此外,我还需要表之间的值差,例如,上面我需要查询返回: 我尝试了很多方法来解决这个问题,但我错过了一些东西,我将非常感谢任何帮助。

  • 问题内容: 我试图找到具有重复值,但仅基于选定的列数,而不是单个列或整个行的行。例如,如果我的表如下所示: 我的问题是: 查找行的“地址和状态”字段与另一行的“地址和状态”字段匹配的行的所有ID。 该查询的答案将是: 有任何想法吗? 意见建议: 如何从单个表中选择同一行中的多列值 问题答案: 请尝试以下方法:

  • 我正在尝试拆分一个word文档,该文档如下所示: 1.0列表项 1.1列表项 1.2列表项 2.0列表项 它存储在docx中,我正在使用python-docx尝试解析它。不幸的是,它在开始时失去了所有的编号。我试图识别每个有序列表项的开始。 python-docx库也允许我访问样式,但是我不知道如何确定样式是否是列表样式。 到目前为止,我一直在处理函数和检查输出,但标准格式类似于: 我一直在使用它

  • 问题内容: 我希望能够在表的所有列中动态查找特定的关键字。该脚本的目的是仅需更改关键字和表名,而无需知道表的所有列是什么。 这意味着以下代码不是令人满意的解决方案: […]输入“关键字”(字段1,字段2,字段3,字段4,…)[…] 我能够使用子查询动态检索表的所有列名。但是然后,该子查询中的IN语句返回空结果。 然后,我创建了一个新的子查询,该子查询以逗号分隔的列表格式返回列的列表。但是结果也是空