【发布时间】:2014-11-20 13:23:21
【问题描述】:
是否可以在没有 JPA 在数据库中创建外键的情况下建立多对一关联?
这些表归另一个系统所有,并且是异步填充的。因此,我们不能在数据库中有 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;
问题在于 JPA SchemaUpdate 尝试添加 FK,即使 ConstraintMode.NO_CONSTRAINT 也是如此
[错误] o.h.t.h.SchemaUpdate - 无法添加外键约束
如果它没有使其余语句失败,我们可以忽略它
[错误] o.h.t.h.SchemaUpdate - 语句关闭后不允许操作。
我们正在使用 hibernate-entitymanager 4.3.7.Final 和 JPA 2.1。
【问题讨论】:
-
你在使用
hibernate.hbm2ddl.auto吗?如果是的话,如果你把它的值设置为none呢? -
我们希望为所有其他实体/表自动生成。我认为这会禁用所有人的自动生成。
-
是的,它会为所有人禁用它。我认为不可能将其配置为仅忽略特定的类/字段。如果您确实禁用它,其他一切都正常吗?