保存与渴望加载参数的对象和OptimisticLockException
问题描述:
我有一个名为教室对象:保存与渴望加载参数的对象和OptimisticLockException
@Entity
public class Classroom {
@ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST })
@JoinColumn(name = "girl", referencedColumnName = "id", nullable = true)
private GirlsInformationObject girl;
@ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST })
@JoinColumn(name = "boy", referencedColumnName = "id", nullable = true)
private BoysInformationObject boy;
}
现在,想象我有两个线程,这既保留有关的课堂和更新该对象在必要。其中一条线索是用关于女孩的信息更新对象,另一条是用关于男孩的信息更新对象。
想象一下,两个线程同时访问同一个“课堂”条目。线程调整适当的InformationObject并使用ClassroomRepository.save(classRoom)
将对象存储在数据库中。如果InformationObjects会被延迟加载,我可以防止OptimisticLockException吗?
答
实际上,这里发生的并发问题导致了一个optimisticException。你不在单独的会话中做这个更新吗?就像在一次交易或会话中,您更新了该对象中的女孩,并且在第二次交易或会话中,您获取该行并更新男孩的领域。请考虑这个
问题是我是否可以通过简单地将类型设置为'FetchType.EAGER'来避开所有这些工作,因为它不是被更新的对象。 – Joetjah