当前位置:  开发笔记 > 编程语言 > 正文

如何在双向关联上禁用Hibernate外键约束?

如何解决《如何在双向关联上禁用Hibernate外键约束?》经验,为你挑选了1个好方法。

我试图禁用在我的双向关联上生成的外键约束.我已经设法为我的所有单向关联做了这个,但由于某种原因它在这里不起作用.

我确实知道最近在Hibernate 5.x中修复的ContraintMode.NO_CONSTRAINT的错误,我正在运行最新的Hibernate 5.2.6.

我的注释目前看起来像这样:

class Parent {
  @OneToMany(mappedBy="parent", cascade=CascadeType.ALL, orphanRemoval=true)
  @OrderColumn(name="childIndex")
  public List getChildren() {
    return children;
  }
}

class Child {
  @ManyToOne(optional=false)
  @JoinColumn(name="parent", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
  public Parent getParent() {
    return parent;
  }
}

但是尽管有NO_CONSTRAINT,Hibernate仍然在child.parent - > parent.id上创建外键约束.

是否需要做一些额外的事情来抑制双向情况下的外键?

谢谢!



1> 小智..:

这是Hibernate中的已知问题,请参阅https://hibernate.atlassian.net/browse/HHH-8805

解决方案是在映射侧添加@ org.hibernate.annotations.ForeignKey(name =“ none”)

class Parent {

  @OneToMany(mappedBy="parent", cascade=CascadeType.ALL, orphanRemoval=true)
  @OrderColumn(name="childIndex")
  @org.hibernate.annotations.ForeignKey(name = "none")
  public List getChildren() {
    return children;
  }

}

注意:最好javax.persistence.ForeignKey改用JPA 2.1 。不建议使用本机注释。

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有