这适用于遗留数据库。这种关系中的两个数据库表没有外键约束,即使子表列保存了父表的 PK。
如果子表在相应列上没有外键约束,JPA 是否支持 @OneToMany 映射(双向或单向)?
简短的回答:是的。
长一:如果数据库已经存在,JPA 是否真的关心外键?如果我们将创建数据库模式的任务留给 JPA 提供者,它将创建外键,这很好。但是如果 JPA 在现有数据库上工作,它只关心外键和主键列的存在以产生正确的连接。外键不是必需的。
事实上,当我使用 Hibernate 时,我们有一个遗留数据库,它使用short
外键列的类型来指向int
另一个表上的主键。不可能有任何外键,但只要我们不使用validate
hbm2ddl
选项,Hibernate 作为 JPA 提供者就可以正常工作,忽略类型不匹配,更不用说缺少外键了。