2011-10-07 6 views
5

私の命名戦略であるhibernateはデフォルトのEJB3NamingStrategyでした。フィールド名とテーブル名はキャメルケースになっていました。私はImprovedNamingStrategyに切り替えてsnakecaseを持っていました。EJB3NamingStrategyとImprovedNamingStrategyの外部キー命名

しかし、私の外部キーには、参照されるエンティティのプライマリキー名がその名前に含まれていません。

例:

TABLE1: EJB3NamingStrategy付きID 名

table2のフィールドは次のようになります。

表2: ID が

をtable1_idが、ImprovedNamingStrategyとtable2のフィールドがされます: テーブル2: id table1

ImprovedNamingStrategyで_idを使用する方法はありますか?私は両方の戦略のlogicalCollectionColumnNameメソッドが同一であるため、休止状態が異なる動作をする理由を理解していません。

答えて

4

ImprovedNamingStrategyを拡張してカスタマイズしてください。ImprovedNamingStrategyの初期実装でこれが間違っていた可能性がありますし、後方互換性を破るように修正できませんでした。

+0

パラメータは、すでに私はEJB3NamingStrategyを使用しますが、私はImprovedNamingStrategyを使用する場合、パラメータがそれを受信しない場合COLUMN_IDが含まれています。なぜか分からない。このメソッドは、コード内の他の場所から呼び出されます。 – Mike

+0

ええ、あなたの書き込みは、私は正しい方法を見ていない。 id部分はコメントされています – Mike

3

この問題は、春のブート1.2.7.RELEASEで解決されています。このスレッドのリファレンスは、jpa hibernateパッケージのドキュメントでも指定されています。クラス署名は、次のように:logicalCollectionColumnNameで受信

package org.springframework.boot.orm.jpa.hibernate; 

public class SpringNamingStrategy extends ImprovedNamingStrategy {}