2011-08-01 4 views
0

問題は次のとおりです。私は複数のフィールドを持つEmbeddableクラス(例えば、Address)のクラスを持っています。別のクラス(たとえば、Employee)は、クラスAddress(f.e. homeAddressworkAddressなど)のいくつかのインスタンスフィールドを持っています。確かに私はAddressフィールドの異なるカラム名、例えばworkAddressStreethomeAddressStreetなどを別のインスタンスに持つ必要があります。クラスごとのHibernate NamingStrategy

各フィールドにAttributeOverride注釈を使用できますが、これは非常に面倒です。この問題を解決するために使用できるインタフェースNamingStrategyがあります。しかし、すべてのドキュメントとサンプルにつきましては、セッションレベルでのみグローバルにしか使用できないことがわかりました。その間、私が取り組んでいるシステムにはそのような不自然さがなく、そのような導入はおそらく既存のスキーマの中で大きく変わるだろう。特定のクラスにのみ適用する方法はありませんか?

答えて

0

本当にworkAddressStreetとhomeAddressStreetのような2つのフィールドを使用する必要がありますか? 私の提案は、単にaddressStreetフィールドを使用し、 "addressType"という値を持つ別のフィールドを持っています。type = 1はhome、value type = 2はworkです。

+0

いいアイデアですが、私はまだいくつかの(実際には3つの)異なるアドレスを持っているので、あるテーブルの中で別のカラム名にマップする必要があります。 しかしあなたの提案は、埋め込み不可能な 'Address'を実行して別のテーブルに保持することを考えさせてくれます。うーん、これは行く道だ... – yozh

関連する問題