Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用已加载的参数和OptimisticLockException保存对象_Java_Multithreading_Hibernate_Jpa_Optimistic Locking - Fatal编程技术网

Java 使用已加载的参数和OptimisticLockException保存对象

Java 使用已加载的参数和OptimisticLockException保存对象,java,multithreading,hibernate,jpa,optimistic-locking,Java,Multithreading,Hibernate,Jpa,Optimistic Locking,我有一个叫做教室的物体: @Entity public class Classroom { @ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST }) @JoinColumn(name = "girl", referencedColumnName = "id", nullable = true) private GirlsInformationObject girl; @Many

我有一个叫做教室的物体:

@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;
}
现在,假设我有两个线程,它们都保存有关教室的信息,并在必要时更新对象。其中一个线程用女孩的信息更新对象,另一个线程用男孩的信息更新对象


想象两个线程同时访问同一个教室条目。线程使用
ClassroomRepository.save(教室)
调整适当的InformationObject并将该对象存储在数据库中。如果InformationObjects将被延迟加载,我可以防止OptimisticLockException吗?

实际上,这里出现的并发问题会导致optimisticException。您不在单独的会话中执行此更新吗?与在一个事务或会话中一样,更新该对象中的女孩,在第二个事务或会话中,获取行并更新男孩字段。请考虑这个

问题是如果我可以通过简单地将类型设置为<代码> FETCHYTYPE。EXPRESS ,因为它不是被更新的对象。