没有外键的JPA关联

是否可以在不使用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" )

关系应该起作用。

以上是 没有外键的JPA关联 的全部内容, 来源链接: utcz.com/qa/425006.html

回到顶部