hbm2ddl - 如何避免Hibernate创建外键约束?

时间:2015-08-22 09:39:21

标签: mysql hibernate jpa foreign-keys hbm2ddl

亲爱的,我正在使用Hibernate和hbm2ddl。我不喜欢为一个关系创建外键约束。不幸的是到目前为止我无法实现它。我用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: 导入期间出错:“无法添加或更新子行:外键约束失败(skateshopbild,CONSTRAINT FK_k93uxcqtc87jifh2j3rliumuj FOREIGN KEY(idKey)REFERENCES {{1 (artikel))“

1 个答案:

答案 0 :(得分:1)

您正在使用正确的注释:

@ForeignKey(value = ConstraintMode.NO_CONSTRAINT)

它看起来像是hibernate 4.x中的一个错误,现在已经在5.x中修复了。如果你可以升级到Hibernate 5.x,那就可以解决问题。

另见JPA association without foreign key