문제점 :동시 수정 금지. Eclipselink (OptimisticLockException)
두 개의 Admins -> Admin1 및 Admin2 두 개의 터미널에서 동시에 UserA 수정.
User와 UserGroup 엔터티 사이에 개의 many-to-many 관계가 있습니다. 이 있습니다.
여기서 Admin1이 User1에 Group1을 할당하면 정보가 저장됩니다. 다른 터미널의 Admin2가 Group2를 UserA에 할당하면 정보는 저장되지만 Admin1이 변경 한 내용을 덮어 씁니다. DB에 체크인 할 때 User2는 Admin2가 Admin1의 변경 사항을 인식하지 못하는 동안 Group2에 할당됩니다.
- 낙천적 인 상황입니까?
- 이것이 낙관적 인 상황이라면 왜 이것이 OptimisticLockException을 던지지 않는가?
- Admin2가 Admin1의 변경 사항을 어떻게 알리는 지 어떻게 알 수 있습니까? EclipseLink가 사용
아래와 같이
@ManyToMany
@JoinTable(name = "user_group", joinColumns = { @JoinColumn(name = "user_group_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") })
private List<User> userList;
@ManyToMany
@JoinTable(name = "user_group",joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_group_id", referencedColumnName = "id") })
private List<UserGroup> userGroupList;
@Version 주석은 각 조작 갱신되는 버전 열 위에 표시된다.
내 측면에서 더 많은 정보가 필요하면 알려주십시오.