Я использую репозиторий JPA, и при сохранении это вызывает эту проблему. Здесь, My Details Objects, иногда исключаются, а иногда и вводятся правильно. Я не знаю, что именно вызывает?
Мои POJO такие,
AB C (Основной объект)
@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;
}
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;
}
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;
}
Здесь Json объекта, иногда обе записи сохраняются, а иногда только 1-я.,
{
"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"
}
]
}
]
}