9

hibernate の @Embeddable クラスで @Embedded を使用できますか。

例 : A は別のクラスの要素コレクションです。

@Embeddable
class A {

    @Embedded
    B b;
}

@Embeddable
class B {

    @Embedded
    C c;
}


@Embeddable
class C {

    @Embedded
    D D;
}

@Embeddable
class D {



}

この種のものは hibernate で有効ですか? ネストの第 3 レベル。

4

2 に答える 2

6

はい、Hibernate で @Embedded オブジェクトをネストすることは有効です。

ドキュメントから直接 ( http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e714 ):

@Entity
public class Person {

    @Embedded
    Address homeAddress;
}          

@Embeddable
public class Address {

    @Embedded
    Country nationality;
}            

@Embeddable
public class Country {
    ...
}    

(ネスティング @Embedded を強調する余分なコードを削除)

于 2013-03-01T23:55:36.163 に答える
4

ジョンカールが述べたように、それは可能です。ネストされた属性の名前を変更するには、「.」を使用してチェーン全体を指定する必要があります。セパレーターとして。たとえば、クラス D に属性fooがある場合、クラス A では次のように名前を変更する必要があります。

@Embedded
@AttributeOverride(name = "c.D.foo", column = @Column(name = "bar"))
B b;
于 2014-10-01T10:54:06.430 に答える