JPA 多个嵌入字段

2023-12-27

JPA实体类是否可以包含两个嵌入的(@Embedded)字段?一个例子是:

@Entity
public class Person {
    @Embedded
    public Address home;

    @Embedded
    public Address work;
}

public class Address {
    public String street;
    ...
}

在这种情况下Person可以包含两个Address实例 - 家庭和工作。我将 JPA 与 Hibernate 的实现结合使用。当我使用 Hibernate Tools 生成架构时,它只嵌入一个Address。我想要的是两个嵌入式Address实例,每个实例的列名称都可以区分或前面加上一些前缀(例如家庭和工作)。我知道@AttributeOverrides,但这需要单独覆盖每个属性。如果嵌入对象(Address) 变得很大,因为每一列都需要单独覆盖。


通用的 JPA 方法是使用 @AttributeOverride。这应该适用于 EclipseLink 和 Hibernate。

@Entity 
public class Person {
  @AttributeOverrides({
    @AttributeOverride(name="street",column=@Column(name="homeStreet")),
    ...
  })
  @Embedded public Address home;

  @AttributeOverrides({
    @AttributeOverride(name="street",column=@Column(name="workStreet")),
    ...
  })
  @Embedded public Address work;
  }

  @Embeddable public class Address {
    @Basic public String street;
    ...
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA 多个嵌入字段 的相关文章

随机推荐