J'ai une instance d'entité JPA dans la couche d'interface Web de mon application. Je voudrais savoir à tout moment si cette entité a déjà été conservée dans la base de données ou si elle est seulement présente dans la session de l'utilisateur. Je voudrais utiliser la méthode entitymanager.contains (Entity), mais dans ma couche d'interface utilisateur, je pense avoir besoin d'un attribut supplémentaire indiquant si l'entité a été enregistrée ou non. Comment mettre en œuvre cela? Je considère l'option suivante pour l'instant:Comment savoir si une entité JPA détachée a déjà été conservée ou non?
- un attribut JPA avec une valeur par défaut définie par la base de données, mais forcerait une nouvelle lecture après chaque mise à jour?
- un attribut non JPA défini manuellement dans mon code ou automatiquement défini par JPA?
Un conseil/autres suggestions? J'utilise JPA 1 avec l'implémentation d'Hibernate 3.2 et je préférerais rester fidèle à la norme.
Absolument, je veux savoir si mon entité est nouvelle.Je préférerais utiliser un autre champ avec une valeur par défaut dans la base de données puisque je n'utilise pas de stratégie JPA GeneratedValue pour la clé primaire (je me configure la clé primaire avec un UUID pour la compatibilité fournisseur/base de données). – snowflake
@snowflake Le problème est que JPA ne prend pas en charge les valeurs générées par la base de données pour les attributs non pk, donc vous devrez utiliser une extension de fournisseur JPA (comme '@ org.hibernate.annotations.Generated') ou pour actualiser vos entités après avoir persisté , ce qui est moche. Je me demande si l'utilisation de '@ GeneratedValue' ne serait pas un meilleur choix. –
Merci pour votre commentaire. Tu as raison c'est moche, je préférerais utiliser comme alternative un ensemble de champs dans et par mon DAO. – snowflake