Я действительно не одобряю такое решение.В проекте, в котором я работаю, мы используем специальные обработчики, которые выполняют всю обработку.Обработчики должны знать, какие объекты должны быть обновлены в случае изменений.Например, используйте абстрактный слой, который обрабатывает обновление базы данных.В случае внесения изменений в Order или OrderLocation, он обрабатывает обновление OrderKey.
Если вы используете прослушиватели, у вас также могут возникнуть проблемы с циклами.Поэтому я предлагаю использовать обработчики вместо сущностей внутри сущностей.
Но в случае, если вы хотите использовать такой механизм, возможно, вам следует попробовать @PrePersist и @PreUpdate, чтобы вызвать метод, способный обрабатывать изменения.к сущности.