我正在使用JPA存储库,并且在保存操作时会导致此问题 在这里,有时会排除“我的详细信息对象”,有时会正确输入“我的详细信息”对象。我不知道到底是什么原因造成的?
我的POJO就是这样,
@Entity
@Table(name = "tblabc")
@Data
@ToString(exclude = {"abcDetails"})
@EqualsAndHashCode(exclude = {"abcDetails"})
public class ABC {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},mappedBy = "abc")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
org.hibernate.annotations.CascadeType.DELETE,
org.hibernate.annotations.CascadeType.MERGE,
org.hibernate.annotations.CascadeType.PERSIST,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
private Set<ABCDetails> abcDetails;
}
@Data
@Entity
@Table(name = "tblabcdetails")
@ToString(exclude = {"abc", "abcProDetails"})
@EqualsAndHashCode(exclude = {"abc", "abcProDetails"})
public class ABCDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String productName;
private String productCode;
@ManyToOne
private ABC abc;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, mappedBy = "abcDetails")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
org.hibernate.annotations.CascadeType.DELETE,
org.hibernate.annotations.CascadeType.MERGE,
org.hibernate.annotations.CascadeType.PERSIST,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
private Set<ABCProDetails> abcProDetails;
}
@Data
@Entity
@Table(name = "tblabcprodetails")
@ToString(exclude = {"abcDetails"})
@EqualsAndHashCode(exclude = {"abcDetails"})
public class ABCProDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String subProductName;
private String subProductCode;
@ManyToOne
private ABC abc;
@ManyToOne
private ABCDetails abcDetails;
}
这是Object的Json,有时两个条目都被保存,有时只有第一个。
{
"name":"Darsh",
"abcdetails":[
{
"productName": "P1",
"productCode":"P1",
"abcProDetails":[
{
"subProductName":"Su1",
"subProductCode":"Su1"
},
{
"subProductName":"Su2",
"subProductCode":"Su2"
}
]
},
{
"productName": "P2",
"productCode":"P2",
"abcProDetails":[
{
"subProductName":"Su3",
"subProductCode":"Su3"
},
{
"subProductName":"Su4",
"subProductCode":"Su4"
}
]
}
]
}