如何在Spring投影中读取数组

问题描述 投票:0回答:1

PostgreSQL
中查询 SELECT p.id, JSON_AGG(JSON_BUILD_OBJECT('id', pp.id)) AS photo_files 语句时,我得到:

为此,我指定了这个投影类:

interface ItemProjection {
    fun getId(): Long

    @JsonProperty("photoFiles")
    @JsonSerialize(using = PhotoFilesProjectionSerializer::class)
    @Column(columnDefinition = "TEXT")
    fun getPhoto_files(): String
}

序列化器:

class PhotoFilesProjectionSerializer : JsonSerializer<String>() {
    override fun serialize(data: String?, gen: JsonGenerator, serializers: SerializerProvider) {
        if (!data.isNullOrEmpty()) {
            gen.writeRawValue(data)
        } else {
            gen.writeStartArray()
            gen.writeEndArray()
        }
    }
}

但是,我得到:

预期结果:

每个项目的

photo_files
必须填充在
photoFiles
内,而不是创建新的数组元素。

spring-boot jpa spring-projections
1个回答
0
投票

我的 SQL 查询按

GROUP BY p.id, pp.id
分组,而我只需
GROUP BY p.id

© www.soinside.com 2019 - 2024. All rights reserved.