jpa lazy return 所有元素
jpa lazy return all element
我有两个 class 品牌和型号。我用懒加载。
@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>
当我打电话给 Brand
卷曲http://localhost:8080/brands
我也有模型
[
{
"brandId":1,
"brand":"Toyota",
"modelList":[
{
"modelId":1,
"model":"Echo"
},
{
"modelId":2,
"model":"Corolla"
}
]
},
{
"brandId":2,
"brand":"Honda",
"modelList":[
{
"modelId":3,
"model":"Civic"
},
{
"modelId":4,
"model":"Accord"
}
]
},
{
"brandId":3,
"brand":"Kia",
"modelList":[
{
"modelId":5,
"model":"Sorento"
}
]
},
{
"brandId":4,
"brand":"Ford",
"modelList":[
{
"modelId":6,
"model":"Mustang"
}
]
}
]
是不是少了什么?
如果您想省略 Brand
中的模型,您应该将 @JsonBackReference
放在 modelList
上,而不是 @JsonManagedReference
。
@JsonManagedReference
是引用的前向部分——正常序列化的部分。
@JsonBackReference
是reference后面的部分,连载时会省略。
希望对您有所帮助。
我有两个 class 品牌和型号。我用懒加载。
@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>
当我打电话给 Brand
卷曲http://localhost:8080/brands
我也有模型
[
{
"brandId":1,
"brand":"Toyota",
"modelList":[
{
"modelId":1,
"model":"Echo"
},
{
"modelId":2,
"model":"Corolla"
}
]
},
{
"brandId":2,
"brand":"Honda",
"modelList":[
{
"modelId":3,
"model":"Civic"
},
{
"modelId":4,
"model":"Accord"
}
]
},
{
"brandId":3,
"brand":"Kia",
"modelList":[
{
"modelId":5,
"model":"Sorento"
}
]
},
{
"brandId":4,
"brand":"Ford",
"modelList":[
{
"modelId":6,
"model":"Mustang"
}
]
}
]
是不是少了什么?
如果您想省略 Brand
中的模型,您应该将 @JsonBackReference
放在 modelList
上,而不是 @JsonManagedReference
。
@JsonManagedReference
是引用的前向部分——正常序列化的部分。
@JsonBackReference
是reference后面的部分,连载时会省略。
希望对您有所帮助。