我可以在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 {
}
这种类似的东西在休眠中是否有效?第三级嵌套。
答案 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;