В режиме гибернации; есть ли способ обновить столбец «updatedDate» верхнего уровня, если обновляется какая-либо дочерняя строка?

#java #hibernate #persistent

#java #спящий режим #постоянный

Вопрос:

У меня есть таблица, в которой хранится поле ID, которое используется для связывания многих других дочерних объектов в режиме гибернации.

Все дочерние таблицы имеют сгенерированный столбец с именем «Parent_ID» или что-то подобное. Объект верхнего уровня также имеет некоторые общие поля, такие как CreatedBy, UpdatedBy, CreatedDate и updatedDate.

В момент обновления дочернего объекта нет триггера для обновления родительских полей «Updated ###». Мне нужно одно поле, в котором хранится информация о любых дочерних обновлениях. Возможно ли это? Я пробовал несколько разных способов, а также читал документы. Я новичок в режиме гибернации, поэтому, если это нарушает некоторые фундаментальные принципы, пожалуйста, дайте мне знать.

Ответ №1:

Если вы пометите этот столбец как @Version , а затем ассоциацию, в которой содержится дочерний объект Cascade.ALL , версия будет «увеличиваться» автоматически при вызове EntityManager.merge родительского объекта.