java - Hibernate连接表

标签 java hibernate cascade join

我正在使用 Hibernate 来管理 Java 应用程序中的持久性。我在 A 端定义了实体 A 和 B 之间的多对多关系(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="delete"为您的 Collection

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

相关文章:

java - 动态更改 RecyclerView 单击中的工具栏项目可见性(无需 LongClick)

java - finish() 如何在 OnClick 事件中工作?

java - Hibernate 和 CRUDRepository Spring Boot

MySql 脚本临时将外键约束更改为级联然后返回

c# - 软删除 - ActiveRecord with Listeners

java - 在eclipse中调试android异常

java - 如何启动 GWT Super Dev Mode

java - 如何在 hibernate 中使用带有位置参数的@Loader?

java - 使用 hibernate 更新列

sql-server - 在table 'c_name'上引入FOREIGN KEY constraint 't_name'可能会造成环路或者多级联路径