il y a des moments où je veux passer dans un objet pour dire une couche d'audit dont le seul travail est de persister les entités (quel que soit le type), mais Comme il s'agit d'une API publique, je veux vérifier que l'objet transmis est un bean entité hibernate et ensuite essayer seulement le saveOrUpdate()Étant donné un objet Java, puis-je lui confirmer un bean persistant en hibernate
Répondre
Je suis sûr que lors de l'exécution, vous pouvez utiliser une sorte de jedi-réflexion -trick pour trouver la météo votre entité est une entité Hibernate (une approche que je ne recommanderais pas), cependant, dans des circonstances normales, vous ne devez pas vous inquiéter si ce n'est pas une entité hibernate, la méthode Session.saveOrUpdate()
va lancer un HibernateException
expliquant la raison pourquoi il ne pouvait pas sauver et/ou le mettre à jour.
Vous ne pouvez rien faire pour empêcher votre méthode publique d'être appelée avec un type d'objet arbitraire. Ce que vous pouvez faire est de documenter votre API quant au type d'entités auxquelles elle s'attend et le comportement qui en résulte si quelque chose de différent lui est transmis.
Il existe quelques méthodes sur l'interface Session
qui prennent un argument Class
, comme createCriteria(Class)
et getCurrentLockMode(Class)
. Je n'ai pas essayé cela, mais vous pourriez essayer de passer la classe de votre objet à l'une de ces méthodes. Si vous avez de la chance, alors si ce n'est pas une classe d'entité, une exception sera levée.
Pas élégant, mais il est tout ce que je suis arrivé :)
http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html#getClassMetadata(java.lang.Class). From JavaDoc, Renvoie: Les métadonnées associées à l'entité donnée; peut être nul si aucune entité de ce type n'a été mappée.
- 1. [java bean] hibernate La session casse un bean java?
- 2. Comment créer un objet persistant dans Java
- 3. Rails: Sélection d'un enregistrement dans un objet, étant donné l'ID
- 4. Obtenir une instance d'un objet persistant, étant donné l'identificateur dans la chaîne
- 5. Je veux appeler un objet de classe, étant le nom de la classe un paramètre donné
- 6. Étant donné un objet, comment puis-je dire par programme quelles interfaces il prend en charge?
- 7. Comment créer un RouteValueDictionary étant donné un chemin virtuel
- 8. Développer un plugin jQuery qui renvoie un objet donné, au lieu de l'objet jQuery lui-même!
- 9. Étant donné un document, sélectionnez un extrait pertinent
- 10. Problème avec hibernate - contexte persistant
- 11. Aucune ligne avec l'argument donné - Hibernate, Java
- 12. Possible d'instancier l'objet étant donné son type en C++?
- 13. problème persistant xml dans Mysql en utilisant hibernate
- 14. Étant donné un objet javascript arbitraire, comment puis-je trouver ses méthodes?
- 15. Flex: comment référencer un objet lui-même?
- 16. Hibernate retourner un autre objet
- 17. Étant donné un nombre, à quel intervalle appartient-il?
- 18. rails, rubis - Étant donné un Regex - Déterminer le match Compte
- 19. jQuery: Étant donné un sélecteur, trouver uniquement ses éléments visibles
- 20. Étant donné 35/4, je veux un "8" retourné
- 21. Étant donné un URI GIT, comment puis-je vérifier?
- 22. Étant donné un modèle, comment parcourir toutes les propriétés?
- 23. Comment supprimer un élément du DOM, étant donné son identifiant?
- 24. Modifier objet persistant
- 25. En Java, est un char [] un objet?
- 26. Persistant un panier en Ruby on Rails
- 27. GAE, modification d'une classe pour un objet persistant
- 28. Spring MVC 3.0: Comment me lier à un objet persistant?
- 29. Comment créer un objet Elixir/SQLAlchemy non persistant?
- 30. Problème persistant des longues chaînes avec Hibernate