我有样本对象:
@Entity
@Table(name = "SAMPLE_AGGREGATES")
public class SampleAggregate {
@Column(name = "VALUE", nullable = false)
private String value;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_ID", nullable = false, updatable = false)
private SampleEntity child;
@Version
private Long version;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
// getters, setters and constructor
}
我想在我改变孩子的东西的那一刻,父母的版本发生了变化,所以我添加了OPTIMISTIC_FORCE_INCREMENT来保存存储库中的方法:
public void save(final T aggregate) {
if (!this.entityManager.contains(aggregate)) {
this.entityManager.persist(aggregate);
}
this.entityManager.lock(aggregate, LockModeType.OPTIMISTIC_FORCE_INCREMENT);
}
现在当我更改子项中的内容时,父版本会更新,但是当我更改父版本时,版本会更新两次(日志中有两个更新:一个更改数据和版本,一个更改版本)。问题当然是在OPTIMISTIC_FORCE_INCREMENT中,如果我删除它,一切都很好。
当我更改父版本时,有没有办法让版本只更新一次(当然,当我更改子版本时,更新了父版本的版本)?