Hi,
I'm using Spring Data JPA 1.2.0.RELEASE with Hibernate 3.6.6 as the JPA provider.
I have an entity with @PreUpdate and @PrePersist on a method :
The problem is that the preUpdateAndPersist() is called on persist but is never called on merge !Code:@Entity @Table(name = "procedure") public class Procedure extends BaseEntity { // ... @Column(name = "updated") private Date updatedOn; public Date getUpdatedOn() { return updatedOn; } @PreUpdate @PrePersist public void preUpdateAndPersist() { this.updatedOn = new Date(); } }
Here's a snippet of code to test that :
The second one pass through the SimpleJpaRepository.save() method, it does call merge() on the entity manager, but doesn't call the method annotated by @PreUpdate.Code:@Test public void testSetUpdatedWhenPersist() { Procedure procedure = new Procedure(); procedure.setProcedureReference("ref1"); procedure = repository.save(procedure); assertNotNull(procedure.getUpdatedOn()); } @Test @DatabaseSetup("/ec/ep/europarl/coordleg/access/interfaces/ProcedureRepositoryTest/testFindByCategoryId.xml") public void testSetUpdatedWhenMerge() { Procedure procedure = new Procedure(); procedure.setId(1L); procedure.setProcedureReference("proc1"); procedure = repository.save(procedure); assertNotNull(procedure.getUpdatedOn()); }
Can someone enlighten me on this one ?Code:junit.framework.AssertionFailedError at foo.access.interfaces.ProcedureRepositoryTest.testSetUpdatedWhenMerge(ProcedureRepositoryTest.java:104) ...
Regards.


Reply With Quote