2011-12-08 23 views
1

が存在する場合にのみ、@Column休止:は、私が持っている列が

@MappedSuperClass 
public class A{ 

    private int boo; 

    @Column(name = boo) 
    public int getBoo(){ 
     return boo; 
    } 

    public void setBoo(int boo){ 
     this.boo = boo; 
    } 
} 

問題があり、列「ブーイング」すべてのテーブルには存在しないかもしれません。列が存在しない場合、 'boo'をnullとして保持するようにgetBoo()に注釈を付けることは可能ですか?

答えて

3

ここでは継承を使用する方が良いかもしれません。つまり、class AWithBoo extends Aです。

1

明確な答えは:いいえ、これはできません。間違いなくあなたのデザインを再考する必要があります。継承を使用して、派生クラスに移動してみませんか?ところで

:あなたはあなたの質問でそれを説明したように、あなたがnullにブーイングを設定することができれば、int booはNPEと爆発するでしょう;)

1

仕事で、私たちはちょっと同じ問題があります:27で使用されたアプリケーションを各国。これらのcoutriesはすべて独自の機能を必要とし、独自のdbカラムも必要です。

JPA/Hibernateではこれを行うことはできません。すべての国で同じエンティティ属性を共有する必要があります。これは、多くの国にとって無駄な列を作成し、国ごとにdb制約を処理することを意味します。