2010-03-19 5 views

Répondre

3

Vous devez implémenter votre propre NamingStrategy (org.hibernate.cfg.NamingStrategy). Peut-être que le sous-classement de celui que vous utilisez actuellement est le plus simple (par défaut, hibernate utilise DefaultNamingStrategy).

Configurez ensuite le sessionFactory avec votre stratégie de nommage:

SessionFactory sf = new Configuration() 
    .setNamingStrategy(new YourNamingStrategy()) 
    .addFile(...) 
    .buildSessionFactory(); 

ou par injection de dépendance ressort sur l'usine de session, si vous l'utilisez:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
... 
    <property name="namingStrategy"> 
    <ref bean="namingStrategy" /> 
    </property> 
... 
0

aussi, si vous avez un particulier La stratégie de nommage NON PROGRAMMATIQUE que vous souhaitez utiliser peut simplement changer le mappage de clé étrangère du fichier hbm.xml. C'est un attribut de tous les ensembles pertinents, etc.

1

Vous ne pouvez pas remplacer quoi que ce soit avec une annotation ou une stratégie de dénomination. FK de tables jointes par exemple ne peut pas être spécifié en utilisant la stratégie de nommage et est une douleur en utilisant l'annotation.

Si vous êtes prêt à tout configurer de la même manière, vous pouvez modifier la configuration d'annotation avant d'exporter le schéma de la base de données

AnnotationConfiguration configuration = ...; 
Iterator<Table> tables = configuration.getTableMappings(); 
... 
Iterator<ForeignKey> keys = table.getForeignKeyIterator(); 
while (keys.hasNext()) { 
ForeignKey key = keys.next(); 
key.setName(...); 
} 
... 

SchemaExport schemaExport = new SchemaExport(configuration); 
schemaExport.setHaltOnError(true); 
schemaExport.execute(false, true, false, true); 
List exceptions = schemaExport.getExceptions(); 
... 
Questions connexes