Löschen einer Entity kaskadiert nicht auf Collection (1:n)

Status
Nicht offen für weitere Antworten.

stna1981

Mitglied
Hi Leute,

ich bastele seit zwei Tagen an einem kleinen ELB 3.0-Projekt und finde die Ursache für das Problem nicht. Ich habe eine Contact-Bean, die mehrere Details enthalten soll (Detail-Bean). Die Beans sehen wie folgt aus:

Code:
@Entity
public class Contact implements Serializable {

	private int id;
	private Set<Detail> detailsCollection;

	public Contact() {
		this.detailsCollection = null;
	}

	@Id
	@GeneratedValue
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, mappedBy = "contact")
	public Set<Detail> getDetailsCollection() {
		return this.detailsCollection;
	}

	public void setDetailsCollection(Set<Detail> detailsCollection) {
		this.detailsCollection = detailsCollection;
	}
}

Code:
@Entity
public class Detail implements Serializable {

	private int id;
	private Contact contact;

	public Detail() {
		this.contact = null;
	}

	public Detail(Contact contact) {
		this.contact = contact;
	}

	@Id
	@GeneratedValuevalueColumnName = "MAX_ID")
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@ManyToOne
	@JoinColumn(name = "CONTACT")
	public Contact getContact() {
		return this.contact;
	}

	public void setContact(Contact contact) {
		this.contact = contact;
	}
}

Das Anlegen eines Contacts sowie entsprechender Details und auch das Löschen der Details funktionieren einwandfrei. Allerdings ist es nicht möglich, einen Contact zu löschen, sobald dieser Details enthält. Meine Session-Bean sieht so aus:

Code:
public void createContact() {
		Contact contact = new Contact();
		em.persist(contact);
	}
	
	public void removeContact(int contactID) {
		Contact contact = em.find(Contact.class, Integer.valueOf(contactID));
		em.remove(contact);
	}
	
	@SuppressWarnings("unchecked")
	public Collection<Contact> getContacts() {
		return em.createQuery("select c from Contact c").getResultList();
	}
	
	public void addDetail(int contactID) {
		Contact contact = em.find(Contact.class, Integer.valueOf(contactID));
		contact.getDetailsCollection().add(new Detail(contact));
		em.merge(contact);
	}
	
	public void removeDetail(int detailID) {
		Detail detail = em.find(Detail.class, Integer.valueOf(detailID));
		Contact contact = detail.getContact();
		contact.getDetailsCollection().remove(detail);
		em.remove(detail);
	}
	
	@SuppressWarnings("unchecked")
	public Collection<Detail> getDetails(int contactID) {
		Contact contact = em.find(Contact.class, Integer.valueOf(contactID));
		return contact.getDetailsCollection();
	}

Beim Versuch, einen Contact zu löschen, der mind. 1 Detail enthält, erscheint folgende Meldung:


Caused by: engine.services.ts.exceptions.BaseRollbackException: Exception in beforeCompletition of ( SAP J2EE Engine JTA Transaction : [034ffffffc2ffffffd6006ffffffd2] ).
Caused by: javax.persistence.PersistenceException: SQLException while removing entity {Contact(id=108)}.
Caused by: dbtech.jdbc.exceptions.DatabaseException: [350]: Referential integrity violated:contact,ADMIN,DETAIL


Ich sitze seit zwei Tagen an der Sache, hab auch eine ungefähre Ahnung, woran es liegt, aber keine Idee, was ich dagegen tun kann :(

Danke, Stefan
 

bronks

Top Contributor
So m.E. liegt das Problem an der Datenbank. Was passiert, wenn Du einen Contact aus der DbConsole mit delete entfernst?
 

stna1981

Mitglied
Das funktioniert einwandfrei. Ich habe auch bisher keine Lösung gefunden, sondern das Problem letztendlich einfach umgangen, indem ich die Beziehung explizit über eine separate Relationentabelle realisiere. So funktioniert es dann. Ist zwaar nicht die optimale Lösung, da eine Fremdschlüsselbeziehung das separate Relationenschema erspart hätte, aber solange ich nicht die Ursache kenne, werde ich es wohl so lassen müssen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Account löschen Allgemeines EE 1
T Account löschen Allgemeines EE 0
I Session löschen in Bean (Session Beans) Allgemeines EE 1
I Eclipse Projekt SVN, Informationen löschen Allgemeines EE 3
M EJB Löschen von DB-Daten beim Deployen verhindern Allgemeines EE 2
K Datatable Löschen Fehler Allgemeines EE 6
hampa Abfrage vor dem Löschen Allgemeines EE 11
P JSF Datatable und löschen Allgemeines EE 2
R Formulareingaben gezielt aus Session löschen Allgemeines EE 4
_basti Sinnvolle Bereitstellung mehrerer JRE in einer Unternehmensumgebung Allgemeines EE 2
F Bestandteile einer WSDL Datei verstehen. Allgemeines EE 1
M Zeitgesteuertes Ereignis in einer dynamic web module Anwendung (eclipse) Allgemeines EE 3
G Unit Test einer JavaEE Anwendung schlägt fehl. JNDI Name nicht gefunden. Allgemeines EE 3
hjpsoft JSF Lösung einer Aufgabe im "Workshop Java EE7" Allgemeines EE 5
O MVC was gehört ins Model bei einer relationalen DB Allgemeines EE 5
J Mit @Schedule annotierte Methode wird nach einer Weile nicht mehr ausgeführt (JBoss AS 7.2) Allgemeines EE 0
OnDemand GUI in einer JavaEE Anwendung Allgemeines EE 6
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
C Fotoverwaltung in einer Multi-User Anwendung Allgemeines EE 4
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
R Unterschied Instantiierung einer normalen und einer EJB-Klasse Allgemeines EE 1
R Test einer JEE-Anwendung Allgemeines EE 3
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
Y Zugriff auf Files aus einer EAR Anwendung Allgemeines EE 8
M Wegweiser für Projekt einer Katastrophen-Stab-SW gesucht! Allgemeines EE 2
G Exception beim versenden einer Mail Allgemeines EE 3
K Image Folder außerhalb einer EAR lagern? Allgemeines EE 7
M Wie erhällt eine MessageDrivenBean Nachrichten aus einer Queue ? Wer Pollt da gegen die DB? Allgemeines EE 3
MQue include einer jsp in eine andere Allgemeines EE 4
J von einer Standalone zur Web Applikation Allgemeines EE 6
A Timeout nach 30 Minuten Laufzeit einer entfernten Methode Allgemeines EE 3
V JSP BEAN Speichern von einer Zahl nach eingabe Allgemeines EE 2
T Privates Attribut in einer JPA Entitiy Class ohne DB-Spalte? Allgemeines EE 3
G Alternative zu static im Kontext einer SSB Allgemeines EE 4
A Aus einer JSP zugreifen auf ein Objekt einer anderen JSP Allgemeines EE 4
A Geschachtelte Schleifen in einer JSF View ? Allgemeines EE 4
S Permanentbetrieb einer Applikation - Anfängerfrage Allgemeines EE 10
T Cookie setzen in einer JSP Datei Allgemeines EE 4
J Direktaufruf einer jsp nicht zulassen Allgemeines EE 2
O Anzeigen mehrerer columns in einer DataTable Allgemeines EE 4
S In einer Bean-Methode an ndere Beans kommen Allgemeines EE 7
M Wie zeige ich Attribute eines Objekts innerhalb einer JSP an Allgemeines EE 2
N GWT - RPC String-Array in einer List Allgemeines EE 2
RaoulDuke EJB 3.0 - Exceptions aus Methoden einer Session Bean Allgemeines EE 2
F [JNDI] Holen einer EJB Allgemeines EE 3
N Seiten aufruf in einer JSP Allgemeines EE 4
W Enter in einer Form mit mehreren Submits Allgemeines EE 2
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
S ResourceBunlde in einer WebApp Allgemeines EE 2
K Prozess-Handling einer Batch-Datei mittels JSP Allgemeines EE 3
E Methoden einer Bean aufrufen? Allgemeines EE 4
G Wurzelverzeichnis einer Webanwendung ermitteln Allgemeines EE 2
P String in ein Textfeld einer externen Seite uebergeben ! Allgemeines EE 2
F Frage zur guten Architektur einer WebApp Allgemeines EE 2
C Externe Bibliothek in einer Webapplikation Allgemeines EE 4
K Design einer J2EE applikation? Allgemeines EE 2
T Änderung des Wertes einer Variable beim Klick auf Link Allgemeines EE 7
C In JSP Befehl zum Laden einer Seite in anderem Frame Allgemeines EE 3
N Einbindung einer Bean in eine JSP (Tomcat-Server 5.5.x) Allgemeines EE 2
S Struts 1.1 download einer Datei Allgemeines EE 4
W Mehrere Applikationenen mit einer Anmeldung möglich? Allgemeines EE 11
K Datei schreiben in einer Web-Application Allgemeines EE 3
N Deployen einer EJB3.0 Bean Allgemeines EE 4
TRunKX Werteübergabe von einer *.jsp in eine *.java ohne struts Allgemeines EE 4
clemson [Struts] Einer Action Parameter übergeben Allgemeines EE 2
S IBM WebSphere - Hinzufügen einer Datei Allgemeines EE 4
T Filesystemzugriff von einer Bean? Allgemeines EE 6
G In einer JSP auf Struts-Elemente "reagieren" Allgemeines EE 4
C Mail von einer Session Bean aus senden Allgemeines EE 2
B mehrere submit-buttons in einer jsp Allgemeines EE 11
B Anstossen einer Methode durch link! Allgemeines EE 4
R HTML CODE EINER SITE AUSLESEN Allgemeines EE 2
R Problem beim hochladen einer Web Application Allgemeines EE 16
T Werte aus einer Auswahliste mit Mehrfachauswahl lesen Allgemeines EE 4
H Hibernate - OneToMany - mappedBy reference an unknown target entity property Allgemeines EE 1
T Anfängerfrage: h:selectOneMenu (JSF 2.0), @ManyToOne Annotation in Entity (JPA 2.0) Allgemeines EE 2
P detached entity passed to persist Allgemeines EE 5
H Bezug Entity<=>DB Allgemeines EE 5
I Entity wirft Nullpointer Allgemeines EE 2
J Datenbankmanipulation, methoden des Entity-Managers ? Allgemeines EE 3
F mappedBy reference an unknown target entity property Allgemeines EE 5
ichbindiegute Performance von Entity Bean create vs. JDBC insert Allgemeines EE 11
S EJB Entity Beans -> CMP Allgemeines EE 11
A Selbstreferenzierter Entity-Bean Allgemeines EE 3
G Entity Bean ignoriert Datenbank Allgemeines EE 16
G JBoss - Session / Entity Allgemeines EE 8
G Persistenz-Entscheidung (Entity Beans, Hibernate, JDBC) Allgemeines EE 12
M Session Bean vers. Entity Bean Allgemeines EE 3
M Entity Beans: Rückgabe von Collectionen an Client Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben