【问题标题】:Spring JPA with a database that doesn't have Foreign Keys带有没有外键的数据库的 Spring JPA
【发布时间】:2021-09-06 23:27:18
【问题描述】:

我必须在 Spring Boot 中重写一个旧软件。该软件有一个没有任何 FK 的数据库。我的问题是,如果某个类具有来自与 FK 的 JPA 注释之一无关的其他类的对象,我无法将它映射到 JPA。

您知道是否可以让 JPA 忽略或禁用 FK 约束?

【问题讨论】:

    标签: java spring database spring-boot jpa


    【解决方案1】:

    无论您的数据库是否有外键,对 Hibernate 来说都无关紧要。 Hibernate 不会检查您的数据库中的外键。当然你可能会在数据库方面遇到一些问题,但是 Hibernate 只会根据你的实体类映射查询,而不是数据库中的外键。

    如果您希望 Hibernate 在应用程序启动时创建您的数据库架构,并且您希望它尽可能接近真实的架构(例如用于测试),您可以使用此注释告诉 Hibernate 不要创建外键:

    @JoinColumn(name = "SOME_ID", nullable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))

    【讨论】:

    • 我还需要使用例如@OneToMany 表示法吗?
    • 如果你想要代码级别的关系,那么是的,Hibernate 怎么知道映射关系?
    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2019-05-29
    • 2017-11-06
    • 1970-01-01
    • 2019-07-13
    • 2016-08-08
    • 1970-01-01
    相关资源
    最近更新 更多