在
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
内,而不是创建新的数组元素。
我的 SQL 查询按
GROUP BY p.id, pp.id
分组,而我只需 GROUP BY p.id
。