Hallo zusammen, ich bin's wieder mal!
Ich habe eine Datenbank aufgesetzt und arbeite jetzt mit JPA und DBUnit darauf.
Ich bin noch in der Lernphase und habe deshalb einige kleinere UnitTests erstellt.
einer davon will einfach nicht ordentlich laufen. Die Datenbank besteht aus 3 Tabellen
Member(Die Familienmitglieder), Family(die Familien), Member_has_family(die Join-Tabelle).
Bei dem Test sollte ein bestimmter User aus der Tabelle Member gelöscht werden,
dementsprechend sollten auch die Datensätze aus der Join-Tabelle gelöscht werden.
Bei der Join-Tabelle funktioniert es super, nur wird der Datensatz in der Member-Tabelle nicht gelöscht!
[JAVA=100]@Test
public void test_deleteMember() {
_em.getTransaction().begin();
Family f = _em.find(Family.class, 2);
List<Member> members = f.getMembers();
assertEquals(5, f.getMembers().size());
Member deletedMember = members.remove(0);
int id = deletedMember.getId();
assertEquals(4, f.getMembers().size());
f.setMembers(members);
_em.persist(f);
_em.flush();
_em.getTransaction().commit();
members = null;
f = null;
f = _em.find(Family.class, 2);
assertEquals(4, f.getMembers().size());
members = f.getMembers();
for (Member m : members) {
if (m.getId() == id) {
fail("Falsch gelöscht!");
}
}
if (_em.find(Member.class, 3) != null) {
_em.getTransaction().begin();
fail("Nur aus Join-Tabelle gelöscht!"); //<--- Hier ist das Problem!
_em.persist(f);
_em.flush();
_em.getTransaction().commit();
}
}[/code]
OrphanRemoval kann ich nicht verwenden, da die Tabellen in einer @ManyToMany-Relation sind.
Hat mir einer von euch vielleicht einen Tipp? Danke schonmal im voraus!
Ich habe eine Datenbank aufgesetzt und arbeite jetzt mit JPA und DBUnit darauf.
Ich bin noch in der Lernphase und habe deshalb einige kleinere UnitTests erstellt.
einer davon will einfach nicht ordentlich laufen. Die Datenbank besteht aus 3 Tabellen
Member(Die Familienmitglieder), Family(die Familien), Member_has_family(die Join-Tabelle).
Bei dem Test sollte ein bestimmter User aus der Tabelle Member gelöscht werden,
dementsprechend sollten auch die Datensätze aus der Join-Tabelle gelöscht werden.
Bei der Join-Tabelle funktioniert es super, nur wird der Datensatz in der Member-Tabelle nicht gelöscht!
[JAVA=100]@Test
public void test_deleteMember() {
_em.getTransaction().begin();
Family f = _em.find(Family.class, 2);
List<Member> members = f.getMembers();
assertEquals(5, f.getMembers().size());
Member deletedMember = members.remove(0);
int id = deletedMember.getId();
assertEquals(4, f.getMembers().size());
f.setMembers(members);
_em.persist(f);
_em.flush();
_em.getTransaction().commit();
members = null;
f = null;
f = _em.find(Family.class, 2);
assertEquals(4, f.getMembers().size());
members = f.getMembers();
for (Member m : members) {
if (m.getId() == id) {
fail("Falsch gelöscht!");
}
}
if (_em.find(Member.class, 3) != null) {
_em.getTransaction().begin();
fail("Nur aus Join-Tabelle gelöscht!"); //<--- Hier ist das Problem!
_em.persist(f);
_em.flush();
_em.getTransaction().commit();
}
}[/code]
OrphanRemoval kann ich nicht verwenden, da die Tabellen in einer @ManyToMany-Relation sind.
Hat mir einer von euch vielleicht einen Tipp? Danke schonmal im voraus!
Zuletzt bearbeitet von einem Moderator: