Java Hibernate乐观\u力\u增量字段@Version由1变为2

Java Hibernate乐观\u力\u增量字段@Version由1变为2,java,hibernate,jpa,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 = "PARE

我有一个示例对象:

@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
}
我希望当我在child中更改某些内容时,父级的版本会更改,因此我添加乐观的_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);
    }
现在,当我在child中更改某些内容时,父版本会更新,但当我更改父版本时,版本会更新两次(日志中有两个更新:一个更新了数据和版本,另一个更新了仅更改的版本)。问题当然是在乐观的力增量中,如果我去掉它,一切都会很好


当我更改父项时,版本是否可以只更新一次(当然,当我更改子项时,父项的版本会更新)?

我赢了金铲。。。您是否设法解决了根本问题?没有,但在写了这个问题之后,我并没有真正寻找解决方案,所以-这只是对数据库的一个附加查询,不会影响我们的应用程序流。