【问题标题】:Spring Data: Getting NonUniqueResult Problem for the querySpring Data:查询的获取 NonUniqueResult 问题
【发布时间】:2020-04-27 09:41:09
【问题描述】:

世界专家您好。需要一些有关使用 SpringData 执行查询的帮助。

期望是通过结合存储库方法名称(Automated Query Construction)来执行Spring Data注解中的Query以获得唯一的结果。显然,它不时会说结果不是唯一的。 这里的问题是在查询构造中是否仍然考虑方法名称,同时还在注释中执行查询。

 @Query("SELECT r from Revision r WHERE r.revisionBid = ?1 AND r.revisionStatusId = ?2 ORDER BY r.lastModifiedDate DESC")
 Optional<Revision> findFirst(Integer revisionBid, Integer revisionStatusId);

提前致谢!

此处定义了限制为 1 个结果的查询创建,方法名称中包含 FIRST 和 TOP。

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation

【问题讨论】:

  • 无法理解问题。

标签: postgresql spring-boot spring-data


【解决方案1】:

当您使用@Query 时,我认为“findFirst”不会起作用,因为查询将由@Query 中的 HQL 表达式构造,而不是通过方法名称传递的流畅 API。因此,当查询返回多个结果时,它将抛出异常,因为 Optional 被告知包装单个返回的对象,而不是集合。在 HQL 查询中添加一个 LIMIT 子句,你应该会很好。

【讨论】:

  • 我改用了 Restrictions,因为方法名称会变得非常长,而 QueryCreation 来自方法名称。感谢您的反馈。
猜你喜欢
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 2015-06-03
相关资源
最近更新 更多