JPA Embeddable可以具有ElementCollection <embeddable>属性</embeddable>

时间:2014-02-12 05:07:41

标签: java jpa orm jpa-2.0

JPA ElementCollection Embeddable可以使用ElementCollection列表嵌入属性吗?

  @Entity
  class Person {
  @ElementCollection
    private List<Address> addressList;
  }


 @Embeddable
    public class Address {
      private String city;
      private String state;
      private String countary;
    @ElementCollection
    private List<Phone> phones;

      ...
    }
    @Embeddable
    public class Phone {
      private String type;
      private String areaCode;
      private String number;
      ...
    }

1 个答案:

答案 0 :(得分:2)

是的,你可以拥有它,如果你尝试配置,你会有类似的东西。

http://postimg.org/image/pc0f3cxbp/

此外,Embeddable类型可以与JPA允许的其他实体具有Collection Relationship。

取自规格JSR317

  

可以使用可嵌入类来表示另一个类的状态   可嵌入的课程。

     

可嵌入的类(包括另一个可嵌入的类)   可嵌入类)可以包含基本类型或其他类型的集合   可嵌入的课程。

     

可嵌入类可能包含与实体的关系或   实体的集合。自嵌入类的实例   自己没有执着的身份,关系来自于   引用的实体是包含embeddable的实体   实例,而不是嵌入本身。

     

可嵌入的类,用作嵌入式ID或映射键   不得包含这种关系

<强>更新

根据你的问题,如果embeddables可以包含一个嵌入列表,这是可能的,并且可以按照这个答案建议的图片来完成,但是关于if和ElementCollection可以包含一个带有另一个元素集合的嵌入式答案是

尝试这样做会导致。

  

映射包含一个可嵌入的&#34; examples.model.Address&#34;用一个   禁止映射&#34;电话&#34;,元素集合可能不包含   具有元素集合映射的嵌入式