使用Hibernate/JPA根据具体情况从@Embedded属性中排除字段
2022-09-02 13:47:22
我正在将Hibernate hbm.xml文件中的一些类迁移到JPA注释。
我们有一个可在多个地方使用的可嵌入类。每个地点都使用“地址”中属性的不同子集。Address
(为简洁起见,省略了 getter/setters)
@Embeddable
public class Address {
String email;
String address;
String city;
String state;
String zip;
String country;
}
@Entity
@Table(name="customer")
public class Customer {
@Embedded
@AttributeOverrides({
@AttributeOverride(name="address", column=@Column(name="ship_addr"),
@AttributeOverride(name="city", column=@Column(name="ship_city"),
@AttributeOverride(name="state", column=@Column(name="ship_state"),
@AttributeOverride(name="zip", column=@Column(name="ship_zip"),
@AttributeOverride(name="country", column=@Column(name="ship_country")
})
Address shippingAddress;
@Embedded
@AttributeOverrides({
@AttributeOverride(name="address", column=@Column(name="bill_addr"),
@AttributeOverride(name="city", column=@Column(name="bill_city"),
@AttributeOverride(name="state", column=@Column(name="bill_state"),
@AttributeOverride(name="zip", column=@Column(name="bill_zip")
})
Address billingAddress;
}
请注意,在此人为示例中,shippingAddress使用Address.country,但billingAddress不使用;他们都没有使用 Address.email。
问题是Hibernate正在为我没有明确提供标签的任何列推断标签。@Column
我试图添加到所有字段,但似乎这并不胜过。@Transient
Address
@AttributeOverride
@Transient
有什么解决方法吗?