我有两个品牌和模特。我使用延迟加载。
@Entity
public class Brand {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long brandId;
private String brand;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "brand")
@JsonManagedReference
private List<Model> modelList;
...
}
@Entity
public class Model {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long modelId;
private String model;
@ManyToOne
@JoinColumn(name = "brandId")
@JsonBackReference
private Brand brand;
...
}
在我的存储库中,我使用标准方法findAll。
public interface BrandRepository extends JpaRepository<Brand, Long>
当我打电话来获得品牌
curl http://localhost:8080/brands
我也得到模特
[
{
“brandId”:1,
“品牌”:“丰田”,
“modelList”:
{
“modelId”:1,
“模式”:“回音”
},
{
“modelId”:2,
“模式”:“花冠”
}
]
},
{
“brandId”:2,
“品牌”:“本田”,
“modelList”:
{
“modelId”:3,
“模式”:“思域”
},
{
“modelId”:4,
“模式”:“雅阁”
}
]
},
{
“brandId”:3,
“品牌”:“起亚”,
“modelList”:
{
“modelId”:5,
“模式”:“索兰托”
}
]
},
{
“brandId”:4,
“品牌”:“福特”,
“modelList”:
{
“modelId”:6,
“模式”:“野马”
}
]
}
]
是否缺少某些东西?
答案 0 :(得分:1)
如果您想省略Brand
中的模型,则应将@JsonBackReference
放在modelList
而不是@JsonManagedReference
上。
@JsonManagedReference
是引用的前向部分 - 正常序列化的部分。
@JsonBackReference
是参考的后半部分 - 它将从序列化中省略。
希望这有帮助。