带有没有外键的数据库的 Spring JPA
Posted
技术标签:
【中文标题】带有没有外键的数据库的 Spring JPA【英文标题】:Spring JPA with a database that doesn't have Foreign Keys 【发布时间】:2021-09-06 23:27:18 【问题描述】:我必须在 Spring Boot 中重写一个旧软件。该软件有一个没有任何 FK 的数据库。我的问题是,如果某个类具有来自与 FK 的 JPA 注释之一无关的其他类的对象,我无法将它映射到 JPA。
您知道是否可以让 JPA 忽略或禁用 FK 约束?
【问题讨论】:
【参考方案1】:无论您的数据库是否有外键,对 Hibernate 来说都无关紧要。 Hibernate 不会检查您的数据库中的外键。当然你可能会在数据库方面遇到一些问题,但是 Hibernate 只会根据你的实体类映射查询,而不是数据库中的外键。
如果您希望 Hibernate 在应用程序启动时创建您的数据库架构,并且您希望它尽可能接近真实的架构(例如用于测试),您可以使用此注释告诉 Hibernate 不要创建外键:
@JoinColumn(name = "SOME_ID", nullable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
【讨论】:
我还需要使用例如@OneToMany 表示法吗? 如果你想要代码级别的关系,那么是的,Hibernate 怎么知道映射关系?以上是关于带有没有外键的数据库的 Spring JPA的主要内容,如果未能解决你的问题,请参考以下文章
JPA eclipselink坚持没有主键但有两个外键的实体