Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在双向关联Spring数据JPA中使用hibernate版本控制?_Java_Spring_Hibernate_Spring Boot_Spring Data - Fatal编程技术网

Java 如何在双向关联Spring数据JPA中使用hibernate版本控制?

Java 如何在双向关联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

假设父子之间有双向一对多关联,映射如下:

TradingAccount.java

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