背景:我加载了一个mysql实例来运行数据库测试,并使用Hibernate(spring-data-jpa)创建了自己的架构,并对数据库进行了一些测试。我所有的实体都是通过注释创建的,并在spring上下文中加载。
桌子:我有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创建架构时,它都会从ThirdParty.CUSTOMER_ID上的MainTable.CUSTOMER_ID创建FK关系,这意味着在尝试使用nullthirdParty保留MainTable时遇到引用完整性问题。
我只是真的想要能够存储MainTable的实例,该实例可以带有或不带有ThirdParty数据。
我不希望Hibernate在ThirdParty.customerId上创建具有FK关系的MainTable