spring 在@Embeddable类中使用@Embedded

zvokhttg  于 2024-01-05  发布在  Spring
关注(0)|答案(2)|浏览(195)

我可以在Hibernate中的@Embeddable类中使用@Embedded吗?
例如:A是不同类中的元素集合。

  1. @Embeddable
  2. class A {
  3. @Embedded
  4. B b;
  5. }
  6. @Embeddable
  7. class B {
  8. @Embedded
  9. C c;
  10. }
  11. @Embeddable
  12. class C {
  13. @Embedded
  14. D D;
  15. }
  16. @Embeddable
  17. class D {
  18. }

字符串
这种东西在Hibernate中有效吗?嵌套的第三层。

q9rjltbz

q9rjltbz1#

是的,在Hibernate中嵌套@Embedded对象是有效的。
直接来自文档:
可嵌入的类型可以嵌套。也就是说,@Embeddable类可以有一个属性,其类型本身就是一个不同的@Embeddable类。
例如,从specification

  1. @Embeddable public class Address {
  2. protected String street;
  3. protected String city;
  4. protected String state;
  5. @Embedded protected Zipcode zipcode;
  6. }
  7. @Embeddable public class Zipcode {
  8. protected String zip;
  9. protected String plusFour;
  10. }

字符串

展开查看全部
e7arh2l6

e7arh2l62#

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

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

字符串

相关问题