休眠一对一映射创建外键

时间:2019-02-18 23:01:03

标签: java spring hibernate spring-data-jpa

背景:我加载了一个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

0 个答案:

没有答案