我正在使用Hibernate来管理Java应用程序中的持久性。我在A侧定义了实体A和B之间的ManyToMany关系(A具有B的集合)。

当我从表B中删除对象时,我希望它也从实体A中的集合中删除。但是,我无法找到如何在Hibernate中定义JoinTable中的外键必须“在删除级联上” ”。

如果有人可以帮助我,我将不胜感激。

编辑:代码示例:

    @Entity
    public class A {

      @ManyToMany
      @JoinTable(name = "aToB", joinColumns = { @JoinColumn(name = "aFk") }, inverseJoinColumns = { @JoinColumn(name = "bFk") })
      public Collection<B> getBs() { ... }

      public void setBs(Collection<B> bs) { ... }

    }


当我查看数据库时,表aToB是通过以下命令创建的:

    CREATE TABLE aToB
    (
      afk integer NOT NULL,
      bfk integer NOT NULL,
      CONSTRAINT aToB_pkey PRIMARY KEY (afk , bfk ),
      CONSTRAINT fk156d338f71d2c983 FOREIGN KEY (afk)
          REFERENCES a (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT fk156d338fa35ac77c FOREIGN KEY (bfk)
          REFERENCES b (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )


我实际上在bfk上有什么“ ON DELETE CASCADE”作为外键。

最佳答案

注解
@Cascade(CascadeType.DELETE)

XML映射文件
为您的收藏品“ cascade =“删除”

关于java - hibernate 联接表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14895166/

10-10 01:46