2010-11-09 21 views
30

ho colpito un bloccante l'aggiunta di una soluzione ad un problema principale project.The esistente è che mi piacerà di utilizzare @Prepersist e @PreUpdate nel POJO di prendersi cura del campo LastModified (inserire e aggiornare) utilizzando l'implementazione di ibernazione di JPA con sessione.@PreUpdate e @PrePersist in Hibernate/JPA (tramite sessione)

Motivo?: Questa modifica è necessaria perché è necessario utilizzare liquibase 1.9.5 e so (dato che ho affrontato questo in precedenza) che liquibase traduce il timestamp su datetime con default current_timestamp, e che è troppo brutto per il database mysql.

Quindi avevo bisogno di un modo per avere questo set in codice piuttosto che nel database in modo da poter tranquillamente cambiare il campo timestamp in datetime. Poi liquibase è felice, sono felice.

Ora sembra che non siano state eseguite le interpreti, con piccola ricerca ho scoperto che è adatto usando entityManager .che è attualmente fuori question.So mi piacerà sapere se c'è un modo SEMPLICEintorno il mio problema, significato dover @Prepersist o @PreUpdate o anche altra soluzione per impostare il campo lastModified ancora utilizzando sessione

risposta

42

Ora sembra che questi interpreti non sono state eseguite, con piccola ricerca ho scoperto che è adatto usando entityManager.

Sì, i callback JPA non funzioneranno se si utilizza l'API Session.

quindi mi piacerebbe sapere se c'è un modo semplice intorno al mio problema, il che significa avere @PrePersist o @PreUpdate o anche altra soluzione per impostare il campo lastModified ancora utilizzando sessione

Con mia conoscenza, non c'è un modo semplice (se si utilizza Spring, MAYBE dare un'occhiata a this post però).

Il mio suggerimento per una soluzione basata su Hibernate sarebbe utilizzare events (e una o più interfacce). Controlla Hibernate and last modified date per un esempio.

+3

Ciao Pascal, ho provato a utilizzare il listener di eventi di ibernazione e ha funzionato di nuovo.grazie per il tuo aiuto. ;) –

+0

C'è una buona spiegazione degli ascoltatori su [http://anshuiitk.blogspot.sk/2010/11/hibernate-pre-database-opertaion-event.html](http://anshuiitk.blogspot.sk/ 2010/11/hibernate-pre-database-opertaion-event.html) – planky

+0

Ecco un modo semplice per abilitare i listener di eventi necessari: https://n1njahacks.wordpress.com/2016/10/07/jpa-callbacks-with- iberna-SessionFactory-e-no-EntityManager / –

Problemi correlati