Reputation: 697
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
Reputation: 3274
Annotation @Cascade( CascadeType.DELETE)
XML mapping file cascade="delete" for your collection
Upvotes: 1