我尝试在 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中的名称字段,但是当名称不同时,会出现显示。
我可以产生如下所示的解决方案
通过使用
@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;
}