Java 如何在双向关联Spring数据JPA中使用hibernate版本控制?
假设父子之间有双向一对多关联,映射如下: TradingAccount.javaJava 如何在双向关联Spring数据JPA中使用hibernate版本控制?,java,spring,hibernate,spring-boot,spring-data,Java,Spring,Hibernate,Spring Boot,Spring Data,假设父子之间有双向一对多关联,映射如下: TradingAccount.java public class TradingAccount { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "tradingAccount", cascade = CascadeType.ALL, orphanRemoval = true) private
public class TradingAccount {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "tradingAccount", cascade = CascadeType.ALL, orphanRemoval = true)
private List<UnderlyingPerTradingAccount> underlyingPerTradingAccounts;
@Version
private Long version;
}
public class UnderlyingPerTradingAccount {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = {CascadeType.PERSIST})
private TradingAccount tradingAccount;
private Boolean enableBuy;
private Boolean enableSell;
}
这段代码可以工作,但问题是在保存或更新交易账户后,我在数据库中发现了新的三个交易账户(所有其他列中的主键+null)您不应该在关系的两侧使用级联选项,尤其是在这样的父子关系中。我得到了这个例外:对象引用了一个未保存的临时实例-在flushing之前保存临时实例您可能会使用对未持久化的
交易账户的引用来保存UnderlyingPerTradingAccount
?当TradingAccount是父项时,您必须仅保存该实体,而不是UnderlyingPerTradingAccount
,即使您仅编辑UnderlyingPerTradingAccount
。