re,
tiens, j'ai fait un petit test de mon côté et oui, tout marche bien:
Code:
@Entity
public class Bar
{
@ManyToMany(cascade =
{ CascadeType.ALL })
private List<Foo> foos = new ArrayList<Foo>();
}
La création du schéma:
Code:
create table Bar (id integer not null auto_increment, primary key (id)) ENGINE=InnoDB
create table Bar_Foo (Bar_id integer not null, foos_id integer not null) ENGINE=InnoDB
create table Foo (id integer not null auto_increment, primary key (id)) ENGINE=InnoDB
alter table Bar_Foo add index FK4F54165AE13B685A (Bar_id), add constraint FK4F54165AE13B685A foreign key (Bar_id) references Bar (id)
alter table Bar_Foo add index FK4F54165ABEBD273 (foos_id), add constraint FK4F54165ABEBD273 foreign key (foos_id) references Foo (id)
le code de test:
Code:
tx.begin();
Foo f1 = new Foo();
Foo f2 = new Foo();
Bar bar = new Bar();
bar.getFoos().add(f1);
bar.getFoos().add(f2);
em.persist(bar);
tx.commit();
//partie remove
tx.begin();
em.remove(bar);
tx.commit();
les traces SQL du delete:
Code:
Hibernate: delete from Bar_Foo where Bar_id=?
Hibernate: delete from Foo where id=?
Hibernate: delete from Foo where id=?
Hibernate: delete from Bar where id=?
J'utilse:
MySQL 5.1 (avec driver JDBC mysql-connector-java-5.1.10-bin.jar)
Hibernate Core 3.2.2.GA
Dialect: org.hibernate.dialect.MySQL5InnoDBDialect
Bon, si tu te retrouves toujours bloqué tu peux désactiver la création de contraintes dans ton cas (ce n'est pas la solution mais ça te permettra d'avancer en attendant de trouver l'origine de tob pb). Voir
viewtopic.php?f=6&t=978321