JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht

D

derFabi95

Mitglied
Hallo zusammen,

ich habe folgende Methode:
Teil der ClanPlayer.java:
public void updateName(String newName) throws Exception {
        EntityManager em = EMUtils.getEntityManager();
        em.getTransaction().begin();
        ClanPlayer cp = em.merge(this);
        cp.setName(newName);
        em.getTransaction().commit();
        em.close();
}

Diese Methode rufe ich innerhalb der gleichen Klasse (andere Methode, static) wie folgt auf:
Java:
try {
        cp.updateName(name);
} catch (Exception ex) {
        ex.printStackTrace();
}
Das funktioniert auch einwandfrei.
Wenn ich nun mit dem gleichen try-catch-Block wie oben in einer anderen Klasse die Methode aufrufe, wird der Name nicht geändert.
Ich vermutete, dass es mit dem PersistenceContext zusammenhängt, weshalb ich in der updateName()-Methode den Merge gemacht habe.
Ohne den ging es in beiden Aufrufen nicht, mit dem geht es immerhin im Aufruf innerhalb einer Methode in der selben Klasse.

Hat da jemand eine Idee?
 
Oneixee5

Oneixee5

Bekanntes Mitglied
ClanPlayer cp = em.merge(this);
cp.setName(newName);
Hier wird eine vermutlich eine andere Instanz von ClanPlayer erstellt und der Name darin und auch in der DB geändert. Die aktuelle Instanz bekommt davon aber nichts mit.
Generell ist der Code aber falsch. Im Falle eines Fehlers wird kein Rollback durchgeführt und die Methode mit einer offenen Transaktion verlassen. Das dürfte für undefinierbare Folgefehler sorgen.
 
D

derFabi95

Mitglied
Hier wird eine vermutlich eine andere Instanz von ClanPlayer erstellt und der Name darin und auch in der DB geändert. Die aktuelle Instanz bekommt davon aber nichts mit.
Generell ist der Code aber falsch. Im Falle eines Fehlers wird kein Rollback durchgeführt und die Methode mit einer offenen Transaktion verlassen. Das dürfte für undefinierbare Folgefehler sorgen.
Hm, also in der Datenbank wird jedenfalls nichts gespeichert.
Auch ohne dem Merge geht es nicht.

Aber klar, ich sollte das mit einer try umwrappen und im catch entsprechend rollbacken. Danke für den Hinweis diesbezüglich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T MySQL Gleiche Ergebnisse mit Offset Datenbankprogrammierung 5
U Nur den ersten Datensatz löschen wenn mehrere gleiche da sind Datenbankprogrammierung 2
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
M Datenbankentwurf: Immer das gleiche Problem! Datenbankprogrammierung 7
S Gleiche Verbindung funktioniert einmal und einmal nicht Datenbankprogrammierung 4
C Seitensystem mit seek Methode Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 0
J Datenbank: Methode wegen doppelten User Datenbankprogrammierung 1
N tableChanged Methode - AbstractTableModel Datenbankprogrammierung 2
W Methode createStatement() Datenbankprogrammierung 14
S Hibernate und Set-Methode Datenbankprogrammierung 16
S Schnellste Methode Datei aus Datenbank herstellen Datenbankprogrammierung 7
A update methode für datenbank Datenbankprogrammierung 2
A Insert Methode Syntaxfehler Datenbankprogrammierung 2
J Methode Datenbankprogrammierung 5
R Effiziente Java-Methode zum finden eines freien PK Datenbankprogrammierung 7
K Schnelle Methode um zu testen ob Datensatz existiert Datenbankprogrammierung 9
G Effektive Methode zum durchsuchen von SQL-Datenbanken Datenbankprogrammierung 7
A Problem mit der Methode setFieldDelimiter("'"); Datenbankprogrammierung 3
L Methode, die Veränderungen in Datenbank zeigt? Datenbankprogrammierung 4
T Methode getColumnIndex(String columnName) ? Datenbankprogrammierung 6
A Blob in Oracle-DB einfügen (veraltete Methode) Datenbankprogrammierung 3
B Methode .next() - das Rätsel für Experten! URGENT Datenbankprogrammierung 2
G SQL-Query Methode Datenbankprogrammierung 4
J Firebase KeepSynced funktioniert nicht Datenbankprogrammierung 0
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
H Derby/JavaDB Beispiel funktioniert nur einmal Datenbankprogrammierung 7
P LDAP: Daten eintragen funktioniert nicht Datenbankprogrammierung 7
M Java Datenbankanbindung funktioniert nicht Datenbankprogrammierung 4
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
E Warum funktioniert das Erzeugen einer View nicht? Datenbankprogrammierung 1
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
L MySQL App/Java Zugriff auf Mysql-DB funktioniert nicht Datenbankprogrammierung 1
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
J Datenbankeintag eines Warenkorbes funktioniert nicht Datenbankprogrammierung 4
P SQL-Statement "Top 1" oder "limit" funktioniert nicht Datenbankprogrammierung 12
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
X3TitanCore mysqldump funktioniert nicht Datenbankprogrammierung 8
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
T HQL Query funktioniert nicht? Datenbankprogrammierung 8
X Rollback mit Savepoint funktioniert auf Oracle nicht (ORA-01086) Datenbankprogrammierung 4
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
W HSQLDB executeUpdate funktioniert nicht Datenbankprogrammierung 20
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
K MySQL Verbindung funktioniert in Netbeans aber .jar funktioniert nicht Datenbankprogrammierung 5
A Rollback funktioniert nicht Datenbankprogrammierung 10
C MySQL Update funktioniert nicht Datenbankprogrammierung 11
W jpmdbc Problem -Beispiel funktioniert nicht Datenbankprogrammierung 9
H SQL Abfrage funktioniert nicht. Datenbankprogrammierung 10
D Problem: Prepared Statement (Insert) funktioniert nicht. Datenbankprogrammierung 3
E Einfache Abfrage funktioniert nicht Datenbankprogrammierung 3
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
J Insert auf Access DB funktioniert nicht Datenbankprogrammierung 5
V commit funktioniert nicht Datenbankprogrammierung 2
A Like-Anweisung funktioniert nicht korrekt Datenbankprogrammierung 2
Y ORACLE - Autoincrement funktioniert nicht Datenbankprogrammierung 2
K Zugriff mittels JDBC funktioniert nur lokal Datenbankprogrammierung 5
V MySql abfrage funktioniert auf einmal nicht mehr Datenbankprogrammierung 2
E executeUpdate() funktioniert auf einmal nicht Datenbankprogrammierung 2
B MySQL Stored Procedure Aufruf funktioniert nicht Datenbankprogrammierung 4
B Update funktioniert nicht Datenbankprogrammierung 8
A INSERT funktioniert nur im Debug-Modus Datenbankprogrammierung 19
G Insert in MS SQL Server Db funktioniert nicht richtig Datenbankprogrammierung 16
W RsultSet auf null abfragen funktioniert nicht Datenbankprogrammierung 4
D Datenbankzugriff auf MS SQL Server 2000 funktioniert nicht Datenbankprogrammierung 3
F Insert Funktioniert nicht Datenbankprogrammierung 6
S MySQL-Abfrage unter java funktioniert nicht! Datenbankprogrammierung 4
P Insert Into mit Acces und Autowert funktioniert nicht Datenbankprogrammierung 2
J DB Verbindung im IDE funktioniert, als jar nicht Datenbankprogrammierung 5
A delete aus datenbank, funktioniert nicht so richtig Datenbankprogrammierung 10
L DB-Verbindung (Oracle) funktioniert nicht Datenbankprogrammierung 35
S Statement.getGeneratedKeys() funktioniert nicht Datenbankprogrammierung 4
R Datenbank zugriff funktioniert nur offline Datenbankprogrammierung 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben