@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.

Есть ли обходной путь для этого?

Ответы на вопрос(2)

Ваш ответ на вопрос