Sto provando ad installare la mia applicazione di ibernazione per mantenere una nuova entità Notification
ogni volta che viene creata un'entità Activity
- al momento, tutto ciò che ho provato lo Notification
non riesce a persistere silenziosamente (nessun errore nei registri ma SQL non viene mai eseguito) .È possibile mantenere nuove entità in un listener @ Pre/PostPersist?
Qualcuno può confermare che è persino possibile mantenere ulteriori entità negli ascoltatori di Hibernate pre/postPersist?
Ho letto nella documentazione:
un metodo di callback non deve richiamare i metodi EntityManager o query!
Ma ho letto diversi altri thread di discussione che sembrano indicare che è possibile.
Per riferimento, i due approcci ho cercato sono:
@PrePersist
metodo - la fissazione di un rapporto tra il cascade.ALLActivity
eNotification
, e nel metodo PrePersist semplicemente creando un nuovoNotification
e collegandolo aActivity
viene creato nella speranza che ilNotification
venga mantenuto.@PostPersist
metodo - utilizzando@Configurable
e ListenerClass, cablaggio in un servizio e la creazione di una nuova entitàNotification
e quindi chiamando esplicitamente l'entityManger persistono
Qualcuno può confermare quello che sto cercando è possibile?
Grazie - Ho bisogno di aggiungere la notifica nel metodo pre/postPersist perché voglio essere sicuro che ogni volta che viene creata un'attività, viene creata anche una notifica corrispondente. Se si considera che la Notifica sia un oggetto di controllo che deve essere garantito, con la prima soluzione c'è il rischio che qualcuno possa chiamare em.persist (act); da qualsiasi altra parte della codebase (una classe batch/operativa o qualsiasi altra classe di servizio) e a meno che non aggiungano anche il codice di notifica, non otteniamo la nostra verifica. La seconda soluzione è quella che ho provato per il mio approccio 1) nel post originale ma sta fallendo silenziosamente. – rhinds
@rhinds Ho appena aggiornato la mia risposta. Puoi creare il link nel costruttore di Activity. –
grazie, ci proverò - anche se sembra ancora che non sarebbe l'ideale come sarebbe ancora aperto per il montaggio prima di persistere. Sembra che pre-persistere dovrebbe essere il posto giusto per fare questo tipo di operazione, ad esempio, abbiamo usato in precedenza il metodo prePersist per impostare le date modificate di tutti gli oggetti, e significava che la data di modifica non poteva mai essere cambiata manualmente o sostituita – rhinds