Задача:Предотвращение одновременной модификации. Eclipselink (OptimisticLockException)
Два администратора -> Admin1 и Admin2 Одновременное изменение UserA с разных терминалов.
Существует отношение многих к большому числу между субъектом User и UserGroup.
Здесь происходит то, что Admin1 назначает Group1 UserA, информация сохраняется. И когда Admin2 с другого терминала назначает Group2 на UserA, информация сохраняется, но перезаписывает изменения, внесенные Admin1. Значит, когда я проверяю DB, UserA назначается Group2, а Admin2 не знает об изменениях, внесенных Admin1.
- Является ли это оптимистичной ситуацией?
- Если это оптимистичная ситуация, то почему это не бросает 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 аннотаций отмечен по сравнению с версией колонки, которая обновляется на каждой операции.
Сообщите, если вам требуется дополнительная информация с моей стороны.