@KenChan, просто введя NULL, у меня не сработало в Oracle 12. Однако оригинальное решение gfonte сработало.
евожу некоторые классы из файла hibernate hbm.xml в аннотации JPA.
У нас есть встраиваемый классAddress
это используется в нескольких местах. Каждое место использует разные подмножества свойств в Адрес.
(геттеры / сеттеры опущены для краткости)
@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
.
Есть ли обходной путь для этого?