保存与渴望加载参数的对象和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。你不在单独的会话中做这个更新吗?就像在一次交易或会话中,您更新了该对象中的女孩,并且在第二次交易或会话中,您获取该行并更新男孩的领域。请考虑这个

+0

问题是我是否可以通过简单地将类型设置为'FetchType.EAGER'来避开所有这些工作,因为它不是被更新的对象。 – Joetjah