hibernate - JPA 是否支持数据库中没有外键约束的实体之间的 @OneToMany 映射?

标签 hibernate jpa ejb-3.0 openjpa

这适用于旧数据库。即使子表列保存父表的 PK,此关系中的两个数据库表也没有外键约束。

如果子表在适当的列上没有外键约束,JPA 是否支持 @OneToMany 映射(双向或单向)?

最佳答案

简短回答:

长话短说:如果数据库已经存在,JPA 真的关心外键吗?如果我们将创建数据库模式的任务留给 JPA 提供者,它将创建外键,这很好。但是,如果 JPA 在现有数据库上工作,它只关心外键和主键列是否存在以产生正确的连接。外键不是必需的。

事实上,当我使用 Hibernate 时,我们有一个遗留数据库,使用 short 类型的外键列来指向另一个表上的 int 主键。不可能有任何外键,但只要我们不使用 validate hbm2ddl 选项,Hibernate 作为 JPA 提供程序就可以正常工作,忽略类型不匹配,而不是值得一提的是缺少外键。

关于hibernate - JPA 是否支持数据库中没有外键约束的实体之间的 @OneToMany 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083611/

相关文章:

java - Hibernate:无法连接到 MySQL 数据库

jsf - 验证错误值无效

java - 使用 Hibernate 的 Spring Boot 应用程序如何与多个结构相同的表进行交互?

jboss - 重新部署后注入(inject)的@EJB 引用为空

hibernate - 尝试使用空实体创建 saveOrUpdate 事件

java - Spring : detached entity passed to persist

java - 没有 EntityManager 绑定(bind)到全局?尝试从 onHandlerNotFound 进行事务处理

date - JPA 标准 : Using order-by clause by truncating date

java - Bean 同时是 EJB 和 JX-RS 资源

jsf - 持久化由 JSF 组件转换器创建的 EJB 实体时如何避免重复的 DB 内容?