У меня есть сущность:@PreUpdate не работает с Spring Data JPA
@Entity
@EntityListeners(MyEntityListener.class)
class MyEntity{ ... }
и слушатель:
class MyEntityListener{
@PrePersist
@PreUpdate
public void doSomething(Object entity){ ... }
}
Я использую Spring Data генерироваться DAO для этого объекта (1.4. 1) и EclipseLink. Поведение кода выглядит следующим образом:
MyEntity entity = new Entity();
entity = dao.save(entity); // the doSomething() is called here
// change something it the entity and save it again
dao.save(entity); // the doSomething() is NOT called here, checked with breakpoint
проблема уже described by someone in 2009, однако, они не придумали какое-либо решение. Интересно, есть ли у кого-нибудь идеи, как его решить?
Вы уверены, что 'doSomething()' не вызывается вообще во второй раз? Он может быть вызван до совершения транзакции, а не сразу. – axtavt
Вы пытались отсоединить объект до второго сохранения()? –
@AndreiI вы правы, когда я получаю объект 'entity = dao.findOne (entity.getId())' перед сохранением его во второй раз, метод слушателя называется успешно. Пожалуйста, разместите его как ответ, и причина, если вы знаете, что происходит. – fracz