我正在尝试使用JpaRepository的findAll()方法来检索实体列表,但是我要检索的Entity OneToMany内部有许多其他Objects作为Relationship。
我的课Program如下:
@Entity
public class Program extends BaseEntity {
private String programTitle;
private String description;
private String programType;
private String price;
@OneToMany(mappedBy = "program", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JsonManagedReference(value = "program-benefit")
private List<Benefit> benefits = new ArrayList<>();
@Column(name = "category")
private String category;
//Getters and setters
}
如您所见,其中有一个列表Benefits。
当我尝试检索Program时,我得到的JSON也具有“两个对象”列表,例如:
我得到的回应:
{
"id":1,
"category": "cardio",
"description": "exercies for cardio",
"benefit": [
{
"description": "good for healt"
},
{
"description": "string2"
}
],
"price": "50",
"program_title": "cardio demo"
}
但是我想要像这样的对象的浅表副本
预期回应:
{
"id":1,
"category": "cardio",
"description": "exercies for cardio",
"price": "50",
"program_title": "cardio demo"
}
我尝试进行更改,CascadeType但是它将停止在所有API中显示嵌套对象,我只希望在调用findAll()method 时删除嵌套对象。
当我调用该findAll()方法时,有没有办法停止显示嵌套对象?
问题来源:Stack Overflow
我看到两个选择:
如果要避免序列化获取的字段,请使用@JsonIgnore。
如果您根本不想获取这些字段,请创建一个DTO并编写一个自定义查询以将结果映射到该字段:
public class ProgramDTO {
private Long id;
private String programTitle;
private String description;
private String programType;
private String price;
}
接着:
entityManager
.createQuery("select new ProgramDTO(p.id, p.programTitle, p.description, p.programType, p.price from Program p")
.getResultList();
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。