【发布时间】:2019-01-09 06:00:33
【问题描述】:
我正在尝试使用 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();
}
我不确定为什么它不能作为浮点数返回。
【问题讨论】:
-
在您的查询中,您使用的是列名,使用属性名 (totalDays),这应该可以正常工作。