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
实例,每个实例的列名都有区别或前缀有一些前缀(例如 home 和 work)。我知道 @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;
...
}
}
关于java - JPA 多个嵌入式字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/331744/