spring 在@Embeddable类中使用@Embedded

zvokhttg  于 5个月前  发布在  Spring
关注(0)|答案(2)|浏览(73)

我可以在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中有效吗?嵌套的第三层。

q9rjltbz

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;
}

字符串

e7arh2l6

e7arh2l62#

正如johncarl所提到的,这是可能的。为了重命名嵌套的属性,你必须指定整个链,使用“.”作为分隔符。例如,如果类D有一个属性 foo,那么在类A中,你需要这样重命名它:

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

字符串

相关问题