Spring Data JPA保存在嵌套实体上生成的ID

我正在将Spring Data JPA与Hibernate一起使用。我有三个实体,标题,行和明细。 Header实体与Line实体具有一对多关系,而Line实体与Detail实体具有一对多关系:

@Entity(name = "Header")
@Data
@Table(name = "HEADER")
public class Header {

    @Id
    @SequenceGenerator(name = "header_generator",sequenceName = "HEADER_SEQ",allocationSize = 1)
    @GeneratedValue (strategy = GenerationType.SEQUENCE,generator = "header_generator")
    @Column(name="HEADER_ID")
    private Long headerId;

    @Column(name="DESCRIPTION")
    private String description;

    @JsonmanagedReference
    @OneToMany(orphanRemoval = true,cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    @JoinColumn(name="HEADER_ID")
    @BatchSize(size = 20)
    private List<Line> lines = new ArrayList<>();
}
@Entity(name = "Line")
@Data
@Table(name = "LINE")
public class Line {

    @Id
    @SequenceGenerator(name = "line_generator",sequenceName = "LINE_SEQ",allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "line_generator")
    @Column(name="LINE_ID")
    private Long lineId;

    @Column(name="CATEGORY")
    private String category;

    @JsonBackReference
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="HEADER_ID",referencedColumnName = "HEADER_ID",insertable = false,updatable = false,nullable = false)
    private Header header;

    @JsonmanagedReference
    @OneToMany(orphanRemoval = true,fetch = FetchType.LAZY)
    @JoinColumn(name="LINE_ID")
    @BatchSize(size = 20)
    private List<Detail> details = new ArrayList<>();
}
@Entity(name = "Detail")
@Data
@Table(name = "DetaIL")
public class Detail {

    @Id
    @SequenceGenerator(name = "template_generator",sequenceName = "DetaIL_SEQ",generator = "template_generator")
    @Column(name="DetaIL_ID")
    private Long detailId;

    @Column(name = "HEADER_ID")
    private Long headerId;

    @Column(name="DESCRIPTION")
    private String description;

    @JsonBackReference
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="LINE_ID",referencedColumnName = "LINE_ID",nullable = false)
    private Line line;
}

我通过调用CrudRepository的标准save()方法创建一个新的Header记录。标头包含至少一个新的行记录,并且行将包含至少一个新的明细。 JSON类似于:

{
    "description": "Test Header","lines": [
        {
            "category": "JJK","details": [
                {
                    "description": "Test Detail"
                }
            ]
        }
    ]
}

生成的header_id未保存到数据库的“ Detail”的header_id字段中。由于我无法在保存之前对其进行手动设置,因此我可以使用任何JPA或Hibernate批注将Line的header_id绑定到Detail的header_id上吗?

mnn1987 回答:Spring Data JPA保存在嵌套实体上生成的ID

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3114206.html

大家都在问