JPA: Problem mit Update von Daten

SamHotte

Top Contributor
Moin Forum,

meine Frage ist leider so allgemein, dass ich bei der mir dazu einfallenden Suche per Google und auch hier im Forum keine sinnvollen Treffer bekomme. Das Problem ist einfach:

Ich versuche, mir JPA mit Eclipselink beizubringen, und habe mir dafür eine kleine Film-Datenbank (a la imdb) mit drei zu persistierenden Klassen ausgedacht. Die Hälfte von CRUD habe ich schon, nämlich create und read - was mir aber fehlt und was ich leider, da vllt. zu trivial, nirgends finde, ist: wie mache ich update und delete?

Mein Versuch des Update sieht so aus, scheitert aber leider:
Java:
Query q = entityManager.createQuery("UPDATE Role r "
	+ "SET r.name=:name, r.movie=:movie, r.actor=:actor "
	+ "WHERE r.id = :id");
q.setParameter("name", role.getName());
q.setParameter("movie", role.getMovie());
q.setParameter("actor", role.getActor());
q.setParameter("id", role.getId());
entityManager.getTransaction().begin();
int updateCount = q.executeUpdate();
entityManager.getTransaction().commit();
return updateCount == 1;

Ideen?
 

ARadauer

Top Contributor
entityManager.getTransaction().begin();
Objekt laden
Object ändern
entityManager.getTransaction().commit();

das sollte reichen.

Ich mach eigentlich kein update. Ich änderer eine persistente Entität und nach dem commit wird die Änderung von Hibernate in die db geschrieben
 

AFlieger

Mitglied
Hier bitte schön:

Java:
public boolean updateUser(User user) {
  EntityManager em = getEntityManager();
  try{
    em.getTransaction().begin();
    User userx = em.find(User.class, user.getUserId());
    userx.setUserName(user.getUserName()); 
    userx.setPasswd(user.getPasswd());
    userx.setEmailAddress(user.getEmailAddress());
    em.getTransaction().commit();
  } finally {
    em.close();
    return false;
  }
}

Ah ja, ich habs übrigens problemlos ergoogeld. :lol::D
 
Zuletzt bearbeitet:

SamHotte

Top Contributor
Wie lädst Du das Objekt gezielt? Das ist, glaube ich, mein Hauptproblem - ich bekomme bei SELECT über die id keine results ... dass folgende gibt eine "NoResultException":
Java:
Query q = entityManager.createQuery("SELECT r FROM Role r WHERE r.id = :id");
q.setParameter("id", role.getId());
LOGGER.debug("Query: " + q.toString());
Role r = (Role) q.getSingleResult();
 

SamHotte

Top Contributor
Hier bitte schön:

Java:
public boolean updateUser(User user) {
  EntityManager em = getEntityManager();
  try{
    em.getTransaction().begin();
    User userx = em.find(User.class, user.getUserId());
    userx.setUserName(user.getUserName()); 
    userx.setPasswd(user.getPasswd());
    userx.setEmailAddress(user.getEmailAddress());
    em.getTransaction().commit();
  } finally {
    em.close();
    return false;
  }
}

Ah ja, ich habs übrigens problemlos ergoogeld. :lol::D


Danke - den korrekten zweiten Parameter von em.find() habe ich gebraucht, daran lag es. Wer googeln kann, ist klar im Vorteil
 
M

maki

Gast
Hm.. ob diese "Lösung" so toll ist... wozu gibt es eigentlich Entitymanager.merge?

Sowas gehört zu den Grundlagen, einfach so googeln mag zwar zu einer "Lösung" führen, aber ob die wirklich praxistauglich ist?

Was, wenn das User Objekt aus weiteren Objekten zusammengesetzt ist?
Alle Werte setzen?
Das kann der EM auch selber ;)
 

SamHotte

Top Contributor
Hm.. ob diese "Lösung" so toll ist... wozu gibt es eigentlich Entitymanager.merge?

Sowas gehört zu den Grundlagen, einfach so googeln mag zwar zu einer "Lösung" führen, aber ob die wirklich praxistauglich ist?

Was, wenn das User Objekt aus weiteren Objekten zusammengesetzt ist?
Alle Werte setzen?
Das kann der EM auch selber ;)

Die Bemerkung verstehe ich jetzt nicht wirklich - wo müsste das EntityManager.merge denn hin? Das Javadoc dazu ist nicht wirklich aussagekräftig, irgendwann muss ich ihm doch sagen, welche neuen Werte in den Attributen zu speichern sind? *brettvorkopf*
 
M

maki

Gast
Lies dir doch mal ein buch zu JPA durch, JavaDoc und Google reichen nicht für so ein komplexes Thema, wenn man dem EM immer erst sagen müsste welche Attributwerte er updaten/speichern soll, wäre das sehr sehr umständlich und würde denn Sinn von ORM ad absurdum führen...

Kurz & bündig, das hier:
Java:
public boolean updateUser(User user) {
  EntityManager em = getEntityManager();
  try{
    em.getTransaction().begin();
    User userx = em.find(User.class, user.getUserId());
    userx.setUserName(user.getUserName()); 
    userx.setPasswd(user.getPasswd());
    userx.setEmailAddress(user.getEmailAddress());
    em.getTransaction().commit();
  } finally {
    em.close();
    return false;
  }
}
.. ist vollkommener Quatsch ;)

Ist wie immer nicht böse gemeint, aber wenn man jemanden mit einem Brett vorm Kopf rumlaufen sieht, sollte man ihm das sagen dürfen :)

Wie gesagt, ist alles zu komplex um alles in einem Forum im Detail zu erläutern(konkrete Fragen sind etwas anderes), oder mal schnell die Antwort per Google zu finden, oder nur über die JavaDoc zu verstehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
J MyBatis - Update Problem Datenbankprogrammierung 4
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
T Problem beim Update in die Access DB Datenbankprogrammierung 9
S Update Problem Datenbankprogrammierung 3
N Hibernate & hsqldb: Problem bei db-update Datenbankprogrammierung 7
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
W Hibernate Update Problem Datenbankprogrammierung 3
O Update-Problem mit Hibernate-Framework Datenbankprogrammierung 5
L Problem mit Update Datenbankprogrammierung 14
G Problem mit Datums-Format bei UPDATE Datenbankprogrammierung 3
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
F MySQL JDBC Problem Datenbankprogrammierung 5
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
R Resultset.last() Problem Datenbankprogrammierung 12
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
I Problem mit ResultSet Datenbankprogrammierung 2
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
T Problem beim schreiben von daten Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
I MySQL MySQL – Proxy Problem Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9
C firebird problem Datenbankprogrammierung 5
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
K SQL Problem mit Date Datenbankprogrammierung 3
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G MySQL Connection Problem Datenbankprogrammierung 3
O MySQL Problem mit Umlauten?! Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben