如何解决为什么我的toString方法不起作用以及如何防止SpringBootJPA中的嵌套返回?
我有两个实体,合作伙伴和广告系列,因此我创建了“一对多”单向关系。
这是我的合作伙伴实体:
@Entity
@Table(name = "partner")
@EntityListeners(AuditingEntityListener.class)
public class Partner {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid",strategy = "uuid2")
private String id;
@NotNull
@Column(name = "partner_name")
private String partnerName;
@NotNull
@Column(name = "partner_code")
private String partnerCode;
@OneToMany(cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name = "partner_id")
private List<Campaign> campaigns = new ArrayList<>();
// constructos,getters,setters,equals,hashcode
@Override
public String toString() {
return "Partner{" +
"id='" + id + '\'' +
",partnerName='" + partnerName + '\'' +
",partnerCode='" + partnerCode + '\'' +
'}';
}
这是我的广告系列实体:
@Entity
@Table(name = "campaign")
@EntityListeners(AuditingEntityListener.class)
public class Campaign {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid",strategy = "uuid2")
private String id;
@NotNull
@Column(name = "partner_name")
private String partnerName;
@NotNull
@Column(name = "partner_code")
private String partnerCode;
@NotNull
@Column(name = "campaign_name")
private String campaignName;
@NotNull
@Column(name = "campaign_code")
private String campaignCode;
// constructos,hashcode
@Override
public String toString() {
return "Campaign{" +
"id='" + id + '\'' +
",partnerCode='" + partnerCode + '\'' +
",campaignName='" + campaignName + '\'' +
",campaignCode='" + campaignCode + '\'' +
'}';
}
但是,当我为伙伴调用findAll()方法时,这是我的响应:
我需要的是在获得findAll()合作伙伴方法时不要在响应中获得Campaigns属性。我不明白为什么我的toString方法不起作用,如果我已定义仅打印ID,partnerName和partnerCode的内容。
所以我不想嵌套响应。
谢谢。
解决方法
您可以使用@JsonIgnore
忽略它,也可以在@OneToMany
批注中添加属性以延迟加载。替换为:
@OneToMany(fetch=FetchType.Lazy,cascade = CascadeType.ALL,orphanRemoval = true)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。