onSave () (для любой сущности, сохраненной в хранилищах данных Hibernate / Spring)

Если моя сущность рассчитала поля, необходимо обновить их перед сохранением в базу данных (дБinsert или жеupdate) Как я могу перехватить вызов метода перед Hibernate или Spring Data Repositorysave()

Ответы на вопрос(1)

Решение Вопроса

Я думаю, что лучший вариант для васEntityListener с использованием@PrePersist а также@PreUpdate аннотации, создайте конфигурацию для прослушивателя сущностей, и вы получите доступ к каждому экземпляру, который вы хотите сохранить. Этот метод вызывается каждый раз, когда вы пытаетесь сохранить или обновить что-либо с помощью хранилищ данных Hibernate или Spring.

public class EntityToPersistListener{

   @PrePersist
   @PreUpdate
   public void methodExecuteBeforeSave(final EntityToPersist reference) {
      //Make any change to the entity such as calculation before the save process
      reference.setAmount(xxxx)
    }

}

Вам просто нужно добавить аннотацию над бином сущности

@Entity
@Table(name = "", schema = "", catalog = "")
@EntityListeners(EntityToPersistListener.class)
public class EntityToPersist implements Serializable {

Проверь этоссылка на сайт для дальнейшего использования

 Paul Verest22 июн. 2016 г., 16:52
Отлично. Единственный оставшийся случай, как это сделать для всех лиц без добавления@EntityListeners аннотаций.
 Koitoer22 июн. 2016 г., 17:24
Я думаю, что вам нужно определить слушателей для каждой сущности, так как они получат объект в методе, но также есть файл orm.xml, в котором вы можете определить слушателей и аудиты.

Ваш ответ на вопрос