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(使用前将#替换为@)