J'ai une table dans ma base de données MYSQL qui n'a pas de clé primaire, mais qui a une clé unique sur deux colonnes. Lorsque vous utilisez l'outil de reverse engineering Hibernate de MyEclipse pour créer un mapping pour cette table, il génère deux classes, une pour named après la table elle-même, et une avec un suffixe "Id". Il semble que la plupart des méthodes utiles se sont retrouvées dans la classe Id, il semble donc que ce soit celui que vous instanciez et sauvegardiez pour conserver les données. Je peux comprendre le fait que la classe Id est créée afin de représenter une ligne unique dans l'objet table/mappé, mais à quoi cela sert-il de diviser cela en deux classes, et quoi, alors est l'utilisation du non-Id -suffixé classe? Mon collègue fait valoir que vous pouvez accomplir la même chose avec une seule classe et se moque de l'utilisation de l'ingénierie inverse pour ces tables qui n'ont pas de clé primaire. Pour ma part, je suppose que les développeurs de MyEclipse sont beaucoup plus intelligents que moi et qu'il y a une très bonne raison de le faire de cette façon. Y a-t-il?Pourquoi l'ingénierie inverse Hibernate de MyEclipse crée-t-elle plusieurs classes lors du mappage de certaines tables?
Répondre
Vous supposez trop mon ami. Ces outils ne proviennent pas réellement de l'équipe MyEclipse, mais du projet Hibernate Tools (JBoss, les développeurs d'Hibernate).
Ceci est un outil de programmation qui ne peut pas tout deviner. C'est assez bon pour les choses simples bien anotées, mais parfois, ça ne va pas générer exactement ce dont vous avez besoin.
La classe d'identification est généralement nécessaire pour représenter une clé primaire composite (une clé utilisant plusieurs attributs). Il utilise les classes de composants Hibernate concept.
Il est également possible de modifier un peu les options du générateur.
Dans votre cas, il serait préférable de faire comme vos collègues le disent. Créez vos propres classes d'entités.
Dans votre fichier désosser:
<table schema="public" name="yourtable">
<primary-key>
<!-- generator may not be necessary for mysql -->
<generator class="increment"></generator>
<key-column name="column_name_of_primary_key" />
</primary-key>
</table>
J'ai eu un problème similaire en cours d'exécution de l'outil dans Eclipse contre une instance teradata. J'avais plusieurs vues à inverser, et ils étaient dans un schéma. Je recevais la classe AcxiomDataId générée par ceci:
<table catalog=".*" schema="U01TKE_GRPR_RADMT_VW" name="F_ACXM_MBR" class="AcxiomData">
<primary-key>
<generator class="increment"></generator>
<key-column name="MBR_UNIQ_KEY" property="memberUniqKey" />
</primary-key>
</table>
Mais la suppression du schéma et attributs catalogue à partir de l'élément de table, je n'ai pas la classe AcxiomDataId:
<table name="F_ACXM_MBR" class="AcxiomData">
<primary-key>
<generator class="increment"></generator>
<key-column name="MBR_UNIQ_KEY" property="memberUniqKey" />
</primary-key>
</table>
Aucune idée pourquoi.
Je suis confronté au même problème. Je pense que lorsque vous n'avez aucune clé dans la table, cela génère deux classes. Sinon, si vous avez une clé dans la table, elle n'en génère qu'une seule.
Au moins pour moi après avoir ajouté une clé primaire dans la table, il génère une seule classe représentant la table. Si je supprime la clé primaire, il génère deux classes.
Ancien fil, mais j'ai pensé utile pour quelqu'un.
Vous devez entrer dans yout db et vérifier si vous avez déjà défini un champ comme clé primaire, puis le fichier de reverse engineering d'hibernation, ne faites plus de classe multiple.
- 1. Hibernate: mappage 3 tables
- 2. Package de mappage Hibernate
- 3. Hibernate SessionFactoryBean pour plusieurs emplacements de fichiers de mappage
- 4. Hibernate: mauvaise performance lors de la suppression d'un élément de la relation plusieurs-à-plusieurs
- 5. Problème de mappage de clé composite Hibernate
- 6. Mappage NHibernate fluide: une table, plusieurs classes
- 7. Mappage enum Hibernate
- 8. Mappage enum Hibernate 'sans table'?
- 9. Java: Hibernate - Requête à supprimer de plusieurs tables
- 10. Django - utiliser le mappage d'url inverse dans les paramètres
- 11. Besoin d'aide pour le mappage Hibernate
- 12. Exclusion de certaines tables du schéma Fluent Nhibernate Génération
- 13. Conventions de dénomination lors du mappage O/R
- 14. Linq to SQL - mappage plusieurs à plusieurs
- 15. Impression de valeurs uniques à partir de plusieurs tables dans l'ordre chronologique inverse
- 16. Pourquoi ne puis-je pas créer d'objets enfants dans Hibernate/NHibernate - problème de mappage difficile
- 17. Configuration de JBoss5 avec MyEclipse
- 18. Fichier de mappage hibernate sans toutes les propriétés
- 19. interface pour seulement certaines classes?
- 20. Java JPA mappage polymorphique sur plusieurs à
- 21. Mappage de données LDAP vers des classes .NET (LINQ)
- 22. Fichier de mappage d'hibernation avec dépendances aux tables/POJO existants
- 23. Suppression d'un élément de plusieurs à plusieurs tables de référence?
- 24. comment faire par ordre dans le mappage hibernate
- 25. Ajout d'un mappage nHibernate lors de l'exécution?
- 26. mappage des tables de liens de la base de données (drda) vers entites dans jpa
- 27. log4j rootlogger désactiver enregistreur pour certaines classes
- 28. Comment vider les données de certaines tables SQLite3?
- 29. Comment réécrire ce mappage hibernate avec des annotations?
- 30. Mappage de jointure interne Hibernate - chaîne où id