2010-11-22 10 views
2

大規模なアプリケーションの異なるパッケージ内のいくつかの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年にオープンしたことを考えると、私は回避策や全く異なるアプローチを探しています。何か案は?

+0

カスタムダイアレクトがそのトリックを行うことができますか? – martin

答えて

0

これらのパッケージが異なるプロジェクトモジュールにある場合、それらを異なるスキーマに入れてみることができます。このようにテーブル名は同じになる可能性があり、気にしないでしょう。ちょっとした考え。