如何将元素ID映射到DTO对象字段?

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

我尝试在 Spring Data 中映射 DTO 类字段中的 elementId 值,但映射没有发生。如果我将字段名称更改为 id 以外的名称,则会执行映射。

    @Query("""
        MATCH (s:Skill {id:$skillId})-[r]-(ss:Synonym)
        RETURN elementId(ss) AS id,
               ss.synonym AS synonym,
               ss.autocomplete AS autocomplete
    """)
    Collection<SynonymResponse> findSynonymsBySkill(String skillId);
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.*;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class SynonymResponse {
    /** ID. */
    private String id;
    /** Tittle. */
    private String synonym;
    /** Show in autocomplete. */
    private boolean autocomplete;
}
@Node({"Synonym"})
public class Synonym {
    @Id
    @GeneratedValue
    private Long id;
    @JsonProperty(
        required = true
    )
    @Property("synonym")
    private String title;
    private boolean autocomplete;

我尝试更改DTO中的名称字段,但是当名称不同时,会出现显示。

java neo4j spring-data
1个回答
0
投票

我可以产生如下所示的解决方案

通过使用

@JsonProperty
,它可以帮助澄清哪个 JSON 属性映射到
SynonymResponse

中的哪个字段
@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class SynonymResponse {
    @JsonProperty("id") // Ensure this matches what you want to map
    private String id;
    private String synonym;
    private boolean autocomplete;
}
© www.soinside.com 2019 - 2024. All rights reserved.