有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring boot如何在JAVA中的3个实体之间使用乐观锁定

我拥有以下实体:

@Entity
public class TableA {
    @Id
    @GeneratedValue(...)
    private Long id;
    private Timestamp updatedDateTime;
    @Version
    private int version;
}

@Entity
public class TableB{
    @Id
    @GeneratedValue(...)
    private Long id;

    @ManyToOne
    @JoinColumn(name="fieldTableC")
    private TableC paymentsData;
}

@Entity
public class TableC{
    @Id
    @Column(name = "fieldTableC")
    private String fieldTableC;
    
    private String someOtherField;
}

我面临的问题是,我找不到有关如何执行以下场景的任何信息: 如果更新了TableB或TableC,那么我需要hibernate自动增加TableA中的版本。我是否应该将表a的FK添加到表B&;表C? 正如你所看到的,我已经有一个@manytone从表B到表C,如果这有任何帮助的话。 PS:我用的是JpaRepository


共 (1) 个答案

  1. # 1 楼答案

    最后,我在parent中添加了child引用,并在child中添加了parent引用。每当我想保存一个孩子时,我也会更新父级UpdateDateTime值。我的方法是@Transient,所以所有内容都将保存在一个事务中

    还添加了级联类型。保存更新,这样在保存父项时,子项也将被保存

    例如: 在表A中添加:

    @OneToMany(mappedBy = "tableA")
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    private List<TableB> list= new ArrayList<>();
    

    添加到表B中:

    @ManyToOne
    @JoinColumn(name = "tableA_root_id")
    private TableA tableA;