这适用于旧数据库。即使子表列保存父表的 PK,此关系中的两个数据库表也没有外键约束。
如果子表在适当的列上没有外键约束,JPA 是否支持 @OneToMany 映射(双向或单向)?
最佳答案
简短回答:是。
长话短说:如果数据库已经存在,JPA 真的关心外键吗?如果我们将创建数据库模式的任务留给 JPA 提供者,它将创建外键,这很好。但是,如果 JPA 在现有数据库上工作,它只关心外键和主键列是否存在以产生正确的连接。外键不是必需的。
事实上,当我使用 Hibernate 时,我们有一个遗留数据库,使用 short
类型的外键列来指向另一个表上的 int
主键。不可能有任何外键,但只要我们不使用 validate
hbm2ddl
选项,Hibernate 作为 JPA 提供程序就可以正常工作,忽略类型不匹配,而不是值得一提的是缺少外键。
关于hibernate - JPA 是否支持数据库中没有外键约束的实体之间的 @OneToMany 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083611/