【发布时间】:2015-11-16 05:47:07
【问题描述】:
亲爱的,我正在使用带有 hbm2ddl 的 Hibernate。我不喜欢这样,因为创建了一个关系外键约束。不幸的是,到目前为止我无法实现。我尝试使用 Hibernate 和 JPA 注释,但没有运气。 有什么提示吗?
我正在使用 Hibernate 4.3.1 和 mysql 5.6
@Entity
class Artikel {
...
@OneToMany(fetch=FetchType.LAZY, mappedBy="artikel")
@NotFound(action=NotFoundAction.IGNORE)
private List<Bild> images;
}
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ForeignKey;
@Entity
class Bild {
@ManyToOne(fetch=FetchType.LAZY)
@org.hibernate.annotations.ForeignKey(name = "none")
@JoinColumn(name="idKey", insertable=false, updatable=false,
foreignKey = @ForeignKey(name="none",value = ConstraintMode.NO_CONSTRAINT))
private Artikel artikel;
}
它总是为“idKey”列上的表“bild”创建外键:FK_k93uxcqtc87jifh2j3rliumuj:
导入时出错:“无法添加或更新子行:外键约束失败(skateshop.bild, CONSTRAINT FK_k93uxcqtc87jifh2j3rliumuj FOREIGN KEY (idKey) REFERENCES artikel (id))”
【问题讨论】:
-
创建 FK 的事实是一件好事。它允许检测您要导入的数据是不连贯的,并且需要修复以使您的应用程序正常工作:您有一个属于不存在的 artikel 的构建。修复您的数据,并将约束留在那里。它确保您的数据保持一致状态。
-
感谢您的评论,我也同意。但不幸的是我不是数据的所有者,我必须使用它,我可以在导入后删除不一致的地方。所以我需要找到一种在导入期间禁用和启用外键的方法
标签: mysql hibernate jpa foreign-keys hbm2ddl