Java 在JSON中映射JoinColum值而不是关联
对于具有Java 在JSON中映射JoinColum值而不是关联,java,json,hibernate,jackson,Java,Json,Hibernate,Jackson,对于具有@ManyToOne关系的给定@Entity,我希望抑制关联类型的映射。JSON表示应该包含forein键(@JoinColumn) @Entity public class OrderPosition implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @ManyToOne @JoinColumn(na
@ManyToOne
关系的给定@Entity
,我希望抑制关联类型的映射。JSON表示应该包含forein键(@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\":");
我如何归档它呢?也许你可以在
订单
字段中添加一个@JsonIgnore
,在订单ID
字段中添加另一个字段。也许你可以在订单
字段中添加一个@JsonIgnore
,在订单ID字段中添加另一个字段。你可以使用以下方法解决方案:
@JsonProperty("order")
public Integer getOrderId() {
return this.order.getId();
}
JsonProperty注释导致使用此getter序列化“order”属性。因此,您只能返回用例的id。我建议使用一个好名字getter(而不是getOrder()…)。您可以使用以下解决方案:
@JsonProperty("order")
public Integer getOrderId() {
return this.order.getId();
}
JsonProperty注释导致使用此getter序列化“order”属性。因此,您只能返回用例的id。我建议使用一个好名字getter(而不是getOrder()…)