大規模なアプリケーションの異なるパッケージ内のいくつかのHibernateエンティティを想定すると、名前の競合がないことを確認したいと思います。例えば。 Person
-Entity in package fooと別のPerson
-Entity in package barがあります。パッケージ固有のHibernate NamingStrategy
今、この2つのエンティティが、このようなテーブル名にマップする必要があります。
foo.Person --> FOO_PERSON bar.Person --> BAR_PERSON
私はこれを達成するために、@の表アノテーションを使用することができます。
@Table(name="FOO_PERSON")
public class Person ...
@Table(name="BAR_PERSON")
public class Person ...
しかし、私が使用したいのですが何らかのNamingStrategyが自動的にこれを行います。 Hibernateはインターフェイスorg.hibernate.cfg.NamingStrategy
を提供します。私はDefaultNamingStrategy
を拡張しようとしましたが、ドキュメントにもかかわらず、あなたはクラスの修飾されていない名前しか取得できないため、パッケージ名に関する情報は得られません。
この問題については、JIRAの問題(http://opensource.atlassian.com/projects/hibernate/browse/HHH-4312)があります。 2007年にオープンしたことを考えると、私は回避策や全く異なるアプローチを探しています。何か案は?
カスタムダイアレクトがそのトリックを行うことができますか? – martin