J'ai rencontré un bloqueur en ajoutant un correctif à un projet existant. Le principal problème est que j'aimerai utiliser @Prepersist
et @PreUpdate
dans le POJO
pour prendre soin du champ LastModified
(insérer et mettre à jour) à l'aide de l'implémentation hibernate de JPA avec session.
Raison?: Cette modification est requise car il est nécessaire d'utiliser liquibase 1.9.5
et je sais (puisque j'y ai déjà fait face) que liquibase traduit l'horodatage lié à datetime avec le courant_timestamp par défaut, et c'est trop mauvais pour la base de données mysql.
J'ai donc eu besoin d'un moyen d'avoir cet ensemble dans le code plutôt que dans la base de données afin que je puisse changer en toute sécurité le champ d'horodatage en datetime.alors la base de données est heureuse, je suis heureux.
Maintenant, il semble que ces interprètes ne soient pas exécutés, avec peu de recherche, j'ai découvert qu'il est approprié d'utiliser entityManager
. C'est actuellement hors de question.J'aimerais donc savoir s'il y a un SIMPLE contournement de mon problème, ce qui signifie avoir @Prepersist
ou @PreUpdate
ou même une autre solution pour définir le champ lastModified
en utilisant toujours session
Maintenant, il semble que ces interprètes ne soient pas exécutés, avec peu de recherche, j'ai découvert qu'il est approprié d'utiliser entityManager.
Oui, les rappels JPA ne fonctionneront pas si vous utilisez l'API Session
.
Je voudrais donc savoir s'il existe un moyen SIMPLE de contourner mon problème, ce qui signifie avoir @PrePersist ou @PreUpdate ou même une autre solution pour définir le champ lastModified en utilisant toujours session
À ma connaissance, il n'y a pas de moyen simple (si vous utilisez Spring, [~ # ~] peut-être [~ # ~] jetez un œil à ce post cependant).
Ma suggestion pour une solution basée sur Hibernate serait d'utiliser événements (et une ou plusieurs interface (s)). Vérifiez Mise en veille prolongée et date de dernière modification pour un exemple.