【发布时间】: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