【问题标题】:Opt lock and OneToMany realtion选择锁定和 OneToMany 关系
【发布时间】:2016-07-26 10:02:01
【问题描述】:

我有 2 个实体:

Package{
    @OneToMany(fetch = EAGER, mappedBy = "package")
    private List<PackageVersion> PackageVersions;
}

PackageVersion{
    private state;  

    @ManyToOne(fetch = FetchType.EAGER)
    private Package package;

    @Version
    @Column(name = "optlock")
    private Long optLock;

}

版本可以处于不同的状态(草稿、直播)。我不会为一个包提供最多一个 DRAFT 包版本。

问题场景是多个并发线程(节点)捆绑创建新的 DRAFT 版本。他们会成功的。

我会尝试将 opt lock 推送到 Package 并使用 @Lock(LockModeType.OPTIMISTIC_FORCE_INCREMENT) 注释保存方法,但这没有帮助。

任何建议如何防止创建多个草稿?

【问题讨论】:

    标签: hibernate jpa spring-data


    【解决方案1】:

    我通过将 optlock 移至 Package 并在其上添加时间戳字段来解决问题。

    这样我总是对 Package 进行更改,因此 optlock 会随着 hibernate 递增。

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 2023-03-20
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      相关资源
      最近更新 更多