2016-09-13 7 views
0

私は成功せず、hibernate.cfg.xmlの中にデフォルトの命名戦略を変更しようとしています:hibernate.cfg.xmlファイルにデフォルトの命名戦略を変更

<hibernate-configuration> 
<session-factory> 
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
    ... 
    <property name="cfg.namingStrategy">com.kestuboof.util.LowercaseNamingStrategy</property> 

私の戦略は呼び出すことはありません。

答えて

0

データベースオブジェクトとスキーマ要素の命名規則は、org.hibernate.cfg.NamingStrategyインタフェースの使用された実装によって制御されます。

org.hibernate.cfg.DefaultComponentSafeNamingStrategy org.hibernate.cfg.DefaultNamingStrategy org.hibernate.cfg.EJB3NamingStrategy org.hibernate.cfg.ImprovedNamingStrategy

:3.6休止は、このインタフェースの4つの実装を有します私はカスタムネーミング戦略を拡張し、そのclassToTableName()メソッドをオーバーライドすることに決めました。私の実装のソースコードは以下で与えられる:

import org.hibernate.cfg.ImprovedNamingStrategy; 

public class CustomNamingStrategy extends ImprovedNamingStrategy { 

    private static final String PLURAL_SUFFIX = "s"; 


    @Override 
    public String classToTableName(String className) { 
     String tableNameInSingularForm = super.classToTableName(className); 
     return transformToPluralForm(tableNameInSingularForm); 
    } 

    private String transformToPluralForm(String tableNameInSingularForm) { 
     StringBuilder pluralForm = new StringBuilder(); 

     pluralForm.append(tableNameInSingularForm); 
     pluralForm.append(PLURAL_SUFFIX); 

     return pluralForm.toString(); 
    } 
} 

次のステップは、私のカスタム命名戦略を使用するようにHibernateを構成することです。

Hibernateリファレンスドキュメントの「ネーミング戦略の実装」で説明しているように、ConfigurationクラスのsetNamingStrategy()メソッドを呼び出すことでカスタムネーミング戦略への参照を設定できます。

HibernateリファレンスマニュアルのXML設定セクションの説明に従って、Hibernate XML設定ファイルのhibernate.ejb.naming_strategyプロパティの値をCustomNamingStrategyに設定できます。

あなたはJPAを使用している場合は、私はあなたの答えの第二部では、より興味を持っていpersistence.xmlの

+0

にCustomNamingStrategyにhibernate.ejb.naming_strategyプロパティの値を設定することにより、使用される命名戦略を設定することができます。 この行をhibernate.cfg.xmlファイルに追加することを提案しますか? <プロパティ名= "hibernate.ejb.naming_strategy"> com.kestuboof.util.LowercaseNamingStrategy – guillaume06

関連する問題