L'exécution de veille prolongée de l'outil d'annotation génération sans le “catalogue” de l'attribut
quand je lance mon hibernate tools
il lit à partir de la base de données et créer des classes java pour chacune des tables,
et une classe java pour les clés primaires composites.
c'est très bien.
le problème vient de cette ligne
@Table(name="tst_feature"
,catalog="tstdb"
)
alors que le nom de la table est nécessaire, le "catalogue" de l'attribut n'est pas nécessaire.
parfois, j'ai envie d'utiliser "tstdb", parfois je veux utiliser "tstdev"
j'ai pensé db qui a été choisie dépend de la connexion jdbc url
mais quand je change l'url jdbc point de "tstdev", il est encore à l'aide de "tstdb"
donc,
je sais ce qui doit être fait,
juste ne sais pas comment sa se fait
mes options sont
- supprimer la génération du "catalogue" attribut
actuellement, je suis en train de faire cette opération manuellement (pas très productif)
ou je pourrais écrire un programme qui analyse le fichier java et de supprimer manuellement l'attribut
mais j'espère que je n'ai pas à
OU
- trouver un moyen de dire à hibernate d'ignorer le "catalogue" de l'attribut et d'utiliser le schéma qui est explicitement spécifié.
je ne sais pas exactement paramètre que je dois changer pour arriver à cela, ou même si l'option est disponible.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de suivre 3 étapes -
1) Dans le
hibernate.cfg.xml
, ajouter cette propriété(comme spécifié dans le post ci-dessus)
2) Dans le
hibernate.reveng.xml
, ajouter de la table des filtres comme ce(seulement cela, pas de nom de catalogue ici)
3) Régénérer le code hibernate
Vous ne verrez pas de nom du catalogue dans les
*.hbm.xml
fichiers.J'ai utilisé Eclipse Galileo et Hibernate-3.2.4.GA.
Il y a une personnalisation de la génération, qui dira quelles sont les tables à mettre dans ce catalogue.
Vous pouvez spécifier le catalogue manuellement (en reveng fichier,
<table>
élément), ou par programmation (dans votre personnalisé ReverseEngineeringStrategy classe, si je me souviens bien).Aussi, j'ai récemment eu à modifier les templates de génération.
Voir la documentation de référence :
vous pouvez personnaliser le catalogue de chacune de vos tables manuellement
Désolé, cela pourrait devenir plus précis, mais je n'ai pas accès à mon ordinateur de travail dès maintenant.
L'attribut catalogue est une "connexion" attribut et doivent être précisés dans la "connexion" fichier de config
hibernate.cfg.xml
et PAS dans un "données" fichier de config*.hbm.xml
.- Je générer le code hibernate via tâche ant
<hibernatetool>
et j'ai mis cette tâche de remplacer après régénération (remplacer schéma-nom de votre base de données).Donc, après génération, attribut catalogue a été supprimé.
C'est une solution de contournement, mais le code généré fonctionne dans mon développement d'un environnement de production avec différents schémas nom.