为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Hibernate 和 Spring-boot 从 JPA 查询返回 SUM?

如何使用 Hibernate 和 Spring-boot 从 JPA 查询返回 SUM?

森栏 2021-06-21 21:02:13
我正在尝试使用 JPA 和 JPQL 来查询我的实体并从表中返回一列的总和(总天数)。我以为我已经设置好了,但我收到了这个错误:Caused by: org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'myRepository':Invocation of init method failed; nested exception isjava.lang.IllegalArgumentException: Validation failed for query for methodpublic abstract java.lang.Floatcom.nissan.rca.repository.MyRepository.selectTotals()!这是我的实体的表示:@Entity@Table(name = "TABLENAME")@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)public class MyEntity implements Serializable {    private static final long serialVersionUID = 1L;    @EmbeddedId    private MyEntityCompositeKey myEntityCompositeKey;    @Column(name = "raiser_id")    private String raiserID;    @Column(name = "total_days")    private Float totalDays;这是我的存储库,我在其中将查询分配给方法:@Repositorypublic interface MyRepository extends JpaRepository<MyEntity, ID> {    @Query("SELECT SUM(total_days) FROM MyEntity")    Float selectTotals();}我从我的 rest 控制器中的 myRepository 对象调用 selectTotals() 方法以进行 api 映射。@GetMapping("/getForecastTotals")public Float getForecastTotals() {    return myRepository.selectTotals();}我不确定为什么它不能作为浮点数返回。
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

它不是有效的 JPQL。

你应该有:

@Query("SELECT SUM(m.totalDays) FROM MyEntity m")

或者,使其成为原生的:

@Query(value = "SELECT SUM(total_days) FROM MyEntity", nativeQuery = true)


查看完整回答
反对 回复 2021-06-23
?
慕的地10843

TA贡献1785条经验 获得超8个赞

将您的 JPQL 更改为 @Query("SELECT SUM(m.totalDays) FROM MyEntity m")


查看完整回答
反对 回复 2021-06-23
  • 3 回答
  • 0 关注
  • 409 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信