猿问

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

我正在尝试使用 JPA 和 JPQL 来查询我的实体并从表中返回一列的总和(总天数)。我以为我已经设置好了,但我收到了这个错误:


Caused by: org.springframework.beans.factory.BeanCreationException:

Error creating bean with name 'myRepository':

Invocation of init method failed; nested exception is

java.lang.IllegalArgumentException: Validation failed for query for method

public abstract java.lang.Float

com.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;

这是我的存储库,我在其中将查询分配给方法:


@Repository

public 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();

}

我不确定为什么它不能作为浮点数返回。


森栏
浏览 410回答 3
3回答

潇湘沐

它不是有效的 JPQL。你应该有:@Query("SELECT SUM(m.totalDays) FROM MyEntity m")或者,使其成为原生的:@Query(value = "SELECT SUM(total_days) FROM MyEntity", nativeQuery = true)

慕的地10843

将您的 JPQL 更改为&nbsp;@Query("SELECT SUM(m.totalDays) FROM MyEntity m")
随时随地看视频慕课网APP

相关分类

Java
我要回答