user1544745
user1544745

Reputation: 697

Hibernate JoinTable

I am using Hibernate for managing persistence in my Java application. I got a ManyToMany relation between the entities A and B that is defined on A's side (A has a collection of Bs).

When I delete an object from table B, I want it also to be deleted from the collection in entity A. However, I can't find out how to define in Hibernate that the foreign key in the JoinTable has to be "on delete cascade".

I would appreciate it if someone could help me out.

EDIT: code example:

    @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) { ... }

    }

When I look in my database, table aToB was created by following command:

    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
    )

what I actually what is to have "ON DELETE CASCADE" for foreign key on bfk.

Upvotes: 1

Views: 795

Answers (1)

Renjith
Renjith

Reputation: 3274

Annotation @Cascade( CascadeType.DELETE)

XML mapping file cascade="delete" for your collection

Upvotes: 1

Related Questions