Если вы измените установленное значение или вернете значение, отличное от установленного, вы запутаете Hibernate. Это связано с тем, что при загрузке экземпляра из базы данных Hibernate сохраняет исходные данные в своем кэше 1-го уровня и возвращает вам экземпляр объекта домена. Когда вы сбрасываете, он сравнивает текущее состояние с исходным, и если он изменился, он помещает изменения в базу данных. Поэтому, если вы возвращаете значение, отличное от установленного, но не меняете его, Hibernate не может определить разницу.
Вам гораздо лучше оставить свойства в покое и создать методы, которые возвращают измененные данные. Я использовал одно соглашение: если, например, у вас есть поле String body
, вы можете получить к нему доступ через имя свойства body
или получатель getBody()
, но вы можете создать метод body()
, который неизвестен Hibernate. и возвращает все, что вы хотите.