在@Embeddable类中使用@Embedded

时间:2013-03-01 23:05:32

标签: java spring hibernate java-ee jpa

我可以在hibernate的@Embeddable类中使用@Embedded吗?

示例: A是diffirent类中的元素集合。

@Embeddable
class A {

    @Embedded
    B b;
}

@Embeddable
class B {

    @Embedded
    C c;
}


@Embeddable
class C {

    @Embedded
    D D;
}

@Embeddable
class D {



}

这种类似的东西在休眠中是否有效?第三级嵌套。

2 个答案:

答案 0 :(得分:4)

是的,在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)

答案 1 :(得分:1)

如约翰卡尔所述,这是可能的。要重命名嵌套属性,您必须使用“。”指定整个链。作为分隔符。例如,如果D类具有属性 foo ,那么在A类中,您需要将其重命名为:

@Embedded
@AttributeOverride(name = "c.D.foo", column = @Column(name = "bar"))
B b;