从表中获取汇总数据

时间:2019-11-18 12:18:24

标签: spring spring-data

我想使用spring数据从表中获取聚合数据。

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        vt = int(num)
    except:
        print("Invalid input")
        continue
    if largest is None:
        largest = vt
    elif vt > largest:
        largest = vt
        print("Maximum is",largest)
    elif smallest is None:
        smallest = vt
    elif vt < smallest:
        smallest = vt
        print("Minimum is",smallest)
@Query("SELECT COUNT(*) AS TOTAL_1, MAX(FIELD_1) AS MAX_1 FROM TABLE_NAME WHERE GROUP_ID = :groupId")
Mono<SummaryEntity> getSummary(@Param("groupId" Long groupId));

但是我收到此错误:“无法读取属性@ org.springframework.data.annotation.Id()“ ...

应该没有ID,只有一行包含摘要数据。

关于获取摘要数据的任何想法?

(代码更复杂,但为此已清除)

2 个答案:

答案 0 :(得分:0)

首先,如果您需要由JPA管理实体SummaryResponse并最终对其进行持久化,则需要将其注释为@Entity并为其分配ID或复合ID(以@Id注释)。

如果您只想使用该DTO来获取数据,则可以为此使用基于Spring接口的投影:

public interface SummaryResponseProjection{
   getTotal1();
   getMax1();
}

,然后将其用于映射查询结果:

@Query("SELECT COUNT(*) AS TOTAL_1, MAX(FIELD_1) AS MAX_1 FROM TABLE_NAME WHERE GROUP_ID = :groupId")
Mono<SummaryResponseProjection> getSummary(@Param("groupId" Long groupId));

答案 1 :(得分:0)

找到原因:

此方法是定义为ReactiveCrudRepository<RawEntity, Long>的存储库的一部分,其中RawEntity的ID已定义。

将方法移至定义为ReactiveCrudRepository<SummaryEntity, Void>的新存储库中即可解决此问题。

谢谢!

相关问题