在春季,条目从Details对象中排除(删除操作时)

时间:2020-03-16 07:12:47

标签: java spring hibernate spring-boot jpa

我正在使用JPA存储库,并且在保存操作时会导致此问题 在这里,有时会排除“我的详细信息对象”,有时会正确输入“我的详细信息”对象。我不知道到底是什么原因造成的?

我的POJO就是这样,

ABC(主要对象)

@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;

}

这是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"
             }
           ]
       }
    ]
    }

0 个答案:

没有答案