Я пытаюсь решить проблему с оптимистичными замками в JPA и Hibernate для родительской организации с ассоциациями. Мне нужно увеличить версию родителя, когда дочерняя организация изменена или новая дочерняя организация сохранена. Я не могу использовать Optimistra_Force_Increment, так как в этой транзакции также можно изменить родительскую сущность, чтобы версия увеличилась дважды. < /P>
Parent {
// The version of parent should be incremented if children list or children entity is modified
@OneToMany(
mappedBy = "parent",
cascade = CascadeType.ALL
)
List children;
...
@Version
Long version;
}
Child {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id", nullable = false)
private Parent parent;
...
}
< /code>
Как я могу достичь увеличения родительской версии, если список детей или детей изменяется или изменяется только для родителя или оба? Для меня идеальное решение состоит в том, чтобы проверить, изменился ли родитель, и если не использовать блокировку приращения версии силы иначе, чтобы не блокировать родителя, поскольку он уже изменился. Решением для этого случая для увеличения является использование @optimisticlock (excuded = false) над детьми. Это нормальное поведение?
Подробнее здесь: https://stackoverflow.com/questions/796 ... sociations