我可以在Hibernate中的@Embeddable类中使用@Embedded吗?例如:A是不同类中的元素集合。
@Embeddableclass A { @Embedded B b;}@Embeddableclass B { @Embedded C c;}@Embeddableclass C { @Embedded D D;}@Embeddableclass D {}
@Embeddable
class A {
@Embedded
B b;
}
class B {
C c;
class C {
D D;
class D {
字符串这种东西在Hibernate中有效吗?嵌套的第三层。
q9rjltbz1#
是的,在Hibernate中嵌套@Embedded对象是有效的。直接来自文档:可嵌入的类型可以嵌套。也就是说,@Embeddable类可以有一个属性,其类型本身就是一个不同的@Embeddable类。例如,从specification:
@Embeddable public class Address { protected String street; protected String city; protected String state; @Embedded protected Zipcode zipcode;}@Embeddable public class Zipcode { protected String zip; protected String plusFour;}
@Embeddable public class Address {
protected String street;
protected String city;
protected String state;
@Embedded protected Zipcode zipcode;
@Embeddable public class Zipcode {
protected String zip;
protected String plusFour;
字符串
e7arh2l62#
正如johncarl所提到的,这是可能的。为了重命名嵌套的属性,你必须指定整个链,使用“.”作为分隔符。例如,如果类D有一个属性 foo,那么在类A中,你需要这样重命名它:
@Embedded@AttributeOverride(name = "c.D.foo", column = @Column(name = "bar"))B b;
@AttributeOverride(name = "c.D.foo", column = @Column(name = "bar"))
2条答案
按热度按时间q9rjltbz1#
是的,在Hibernate中嵌套
@Embedded
对象是有效的。直接来自文档:
可嵌入的类型可以嵌套。也就是说,@Embeddable类可以有一个属性,其类型本身就是一个不同的@Embeddable类。
例如,从specification:
字符串
e7arh2l62#
正如johncarl所提到的,这是可能的。为了重命名嵌套的属性,你必须指定整个链,使用“.”作为分隔符。例如,如果类D有一个属性 foo,那么在类A中,你需要这样重命名它:
字符串