【问题标题】:JPA repository return one item from db but there are multiple item in the dbJPA 存储库从数据库返回一项,但数据库中有多项
【发布时间】:2021-11-25 12:14:56
【问题描述】:

我的存储库中有以下功能

Set<Felhasznalo> findAllByNevContainsIgnoreCase(String nev);

当我在控制器中使用此功能时,我得到了一个用户。

例如,如果我有一个字符串“John”,并且我使用该字符串调用 repo 函数,我得到了“John Doe”,但我在数据库中也有“John Doe Jr”,我也需要他。

为什么我只有一个用户?

【问题讨论】:

  • 使用 Containing 而不是 Contains (AFAIK) 并确保你有正确的 hashCodeequals 方法,因为你正在使用 Set 这些很重要。跨度>
  • 我什么都没改变

标签: java spring spring-boot spring-mvc spring-data-jpa


【解决方案1】:

我看到您使用的是Set。也许你已经实现了一个 equals() 函数来检查名称,Set 过滤掉重复的元素。

尝试将您的代码更改为:

List<Felhasznalo> findAllByNevContainsIgnoreCase(String nev);

所以使用List

【讨论】:

  • 我把它改成了一个列表,但我有同样的问题
  • 如果直接在数据库上进行查询会发生什么?尝试记录 Hibernate baeldung.com/sql-logging-spring-boot 完成的查询
【解决方案2】:

这是因为您将结果存储在Set 中,该Set 不允许任何重复值,但在这里,您有重复的名称。尝试将Set 更改为List

public List<Felhasznalo> findAllByNevContainsIgnoreCase(String nev);

【讨论】:

  • 我试过但没有帮助
  • 尝试写findAllByNev(String nev)而不是findAllByNevContainsIgnoreCase(String nev)
猜你喜欢
  • 2021-04-23
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 2021-06-24
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多