如何解决Spring在JSON中多对一
您好,可以在json中添加映射值吗?
产品实体
@Id
@Column(unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique = true)
private String title;
private String description;
@OneToMany(fetch = FetchType.LAZY)
private List<Options> options= new ArrayList<>();
选项实体
@Id
@Column(unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(fetch = FetchType.EAGER)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private Product product;
private BigDecimal price=new BigDecimal(0);
private BigDecimal discount=new BigDecimal(0);
我得到的是
{
"id": 2,"price": 300.00,"discount": 35.00
},
我想要的是
{
"id": 2,"discount": 35.00,"product":[
"id": 2,"title": "dsfa","description": "dsfa",....
]
},
我想将产品添加到json响应中,如何实现呢?
解决方法
是的,只需使用@JsonIgnoreProperties
。
@Id
@Column(unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique = true)
private String title;
private String description;
@OneToMany(fetch = FetchType.LAZY)
@JsonIgnoreProperties(value = {"product"})
private List<Options> options= new ArrayList<>();
第二等:
@Id
@Column(unique = true)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(fetch = FetchType.EAGER)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnoreProperties(value = {"options"})
private Product product;
private BigDecimal price=new BigDecimal(0);
private BigDecimal discount=new BigDecimal(0);
您将避免在json结果中出现无限循环,并获取所有引用对象(关系)。
,一个产品有很多选择权,反之亦然? 在您的代码中,一个产品有很多选择。
但是,如果关系正确,则获得自定义结果的更好方法是使用DTO。
使用DTO,您可以创建具有所需所有详细信息的自定义类,例如:
ProductDTO
private Integer id;
private String title;
private String description;
getter / setter
OptionDTO
private Integer id;
private BigDecimal price=new BigDecimal(0);
private BigDecimal discount=new BigDecimal(0);
private List<Product> products;
getter / setter
Soo,首先使用服务进行检索并存储数据,然后设置DTO。
在您可以发送数据并获取自定义Json之后。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。