【问题标题】:Map JoinColum value instead of association in JSON映射 JoinColum 值而不是 JSON 中的关联
【发布时间】:2018-03-12 11:24:05
【问题描述】:

对于具有@ManyToOne 关系的给定@Entity,我想抑制关联类型的映射。 JSON 表示应包含外键 (@JoinColumn)。

@Entity
public class OrderPosition implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @ManyToOne
    @JoinColumn(name = "order_id", referencedColumnName = "id")
    //@Json???
    private Order order;

    //  ...
}

orderPosition = new OrderPosition()
// ...
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(orderPosition);
assertThat(json).contains("\"order_id\":");

我该如何存档?

【问题讨论】:

    标签: java json hibernate jackson


    【解决方案1】:

    您可以使用以下解决方案:

    @JsonProperty("order")
    public Integer getOrderId() {
        return this.order.getId();
    }
    

    JsonProperty 注释导致使用此 getter 来序列化“order”属性。因此,您只能返回用例的 id。我建议使用一个好听的 getter 名称(not getOrder() ...)。

    【讨论】:

      【解决方案2】:

      您可能只需将@JsonIgnore 添加到order 字段并为orderId 添加另一个字段。

      【讨论】:

        猜你喜欢
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        相关资源
        最近更新 更多