Hibernate OPTIMISTIC_FORCE_INCREMENT 将字段与 @Version 增加 2 而不是 1

Are*_*isz 5 java hibernate jpa

我有示例对象:

@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
}
Run Code Online (Sandbox Code Playgroud)

我想当我改变孩子的某些东西时,父母的版本发生了变化,所以我添加了 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);
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我更改子项中的某些内容时,父版本会更新,但是当我更改父项时,版本会更新两次(日志中有两个更新:一个是更改了数据和版本,另一个是仅更改了版本)。问题当然是在 OPTIMISTIC_FORCE_INCREMENT 中,如果我删除它,一切正常。

当我更改父级时,有没有办法让版本只更新一次(当然,当我更改子级时,父级的版本也会更新)?