Справочная информация: я загружаю экземпляр mysql для запуска тестов БД, создаю схему, используя Hibernate (spring-data-jpa), и запускаю некоторые тесты для БД.Все мои сущности создаются с помощью аннотаций и загружаются в контексте весны.
Таблицы: у меня есть 2 таблицы:
MainTable:
- id (PK)
- customerId
...
ThirdParty:
- id (PK)
- customerId (FK: MainTable.customerId)
- serviceId
Это сопоставление один к одному, так как я не делаюхочу добавить serviceId в мою MainTable.
Мои объекты настроены следующим образом:
@Table
@Entity
public class MainTable {
@Id
@Column
private String id;
@Column(name = "CUSTOMER_ID")
private String customerId;
@OneToOne
@JoinColumn(name = "CUSTOMER_ID", referencedColumnName = "CUSTOMER_ID")
private ThirdParty thirdParty;
}
@Table
@Entity
public class ThirdParty {
@Id
@Column
private String id;
@Column(name = "CUSTOMER_ID")
private String customerId;
@Column(name = "SERVICE_ID")
private String serviceId;
}
Я хочу, чтобы MainTable.thirdParty обнулялся.Всякий раз, когда Hibernate создает схему, он создает отношение FK из MainTable.CUSTOMER_ID для ThirdParty.CUSTOMER_ID, что означает, что у меня возникает проблема с целостностью ссылки при попытке сохранить MainTable с нулевым ThirdParty.
Я просто очень хочу иметь возможность хранить экземпляр MainTable, который может быть с данными ThirdParty или без них.
Я не хочу, чтобы Hibernate создавал MainTable с отношением FK на ThirdParty.customerId