是否可以在不使用JPA在数据库中创建外键的情况下建立ManyToOne关联?
这些表由另一个系统拥有,并异步填充。因此,数据库中不能有FK。几乎总是,最终还是有联系。
@ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name="`Order Type`", referencedColumnName = "`Order Type`", insertable = false, updatable = false), @JoinColumn(name="`Order No`", referencedColumnName = "`No`", insertable = false, updatable = false) }, foreignKey = @javax.persistence.ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private OrderHeader orderHeader;
问题是,即使ConstraintMode.NO_CONSTRAINT,JPA SchemaUpdate也会尝试添加FK。
[错误] ohthSchemaUpdate-无法添加外键约束
如果它没有使其余语句失败,我们可以忽略它
[错误] ohthSchemaUpdate-语句关闭后不允许执行任何操作。
我们使用的是hibernate-entitymanager 4.3.7.Final和JPA 2.1。
ConstraintMode.NO_CONSTRAINT被忽略的事实看起来像是Hibernate 4中的一个错误,因为已在5中修复。
https://hibernate.atlassian.net/browse/HHH-8805
建议添加已弃用(hibernate而不是JPA)注释
@ForeignKey( name = "none" )
关系应该起作用。