HSQLDB Problem mit EntityManager

Nemesys88

Bekanntes Mitglied
Guten Abend!

Ich habe eine Anwendung, mit der ich per EntityManager mit der Datenbank agiere (Hsqldb, JPA, Eclipselink).

Habe folgende Datenbank - Funktionen:

Java:
          public Person savePerson(String name, int alter) {
                Person p = new Person(); 
                try {
                  entityManager.getTransaction().begin();
                    p.setName(name);
                    p.setAlter(alter);
                    p = entityManager.merge(p);
                     // 1. entityManager.refresh(p)
                  entityManager.getTransaction().commit();
                } catch (Exception e) {
                  entityManager.getTransaction().rollback();
                }
                return p;
              }

          public void deletePerson(Long id) {
                try {
                  entityManager.getTransaction().begin();
                  // 2.    entityManager.flush();
                  // 3.    entityManager.clear();
                  Person p = (Person) entityManager.find(Person.class, id);
                  // 4. entityManager.refresh(p);
                  entityManager.remove(p);
                  entityManager.getTransaction().commit();
                } catch (Exception e) {
                  entityManager.getTransaction().rollback();
                }
              }

Wenn ich das so laufen lasse kann ich Personen anlegen und persistent speichern. Das Problem: Lege ich einen Datensatz Person an muss ich, um den gleichen DS zu löschen, erst das Programm einmal neustarten.

Soweit ich mich jetzt einlesen konnte, liegt das wohl daran, dass der EntityManager die Persistenz-Ebene nicht aktualisiert. Um das zu gewährleisten wollte ich es mit refresh() versuchen. (bzw. flush/clear)

Wenn ich Kommentar (1) jetzt einkommentiere funktioniert aber das saven nicht mehr korrekt.
Und (2)+(3) bzw. (4) hat einfach rein garnichts bewirkt...
 

Nemesys88

Bekanntes Mitglied
Wieso greifst du überhaupt manuell ins Transaction handling ein? Es sollte nicht nötig sein die Transaction explixit zu starten und zu beenden, bzw zu rollbacken.

Weil ich mich an diesem Beispiel hier orientiert habe: http://www.javatips.net/blog/2012/12/java-persistence-jpa-2-0-tutorial-with-eclipselink?page=3 - Irgendwo muss man sich ja eine Anleitung suchen, wenn es neu für mich ist. :)

Zudem würde ich, falls nicht explizit ein merge nötig ist, ein persist machen um die Daten zu speichern.
Ok, das kann ich natürlich machen. Leider reagiert er auf entityManager.persist(p); nicht (reagiert nicht = er speichert es nicht in der Datenbank) , wenn ich danach kein commit() mache (und dafür muss ich vorher begin() aufrufen)
 

Nemesys88

Bekanntes Mitglied
Also hab's jetzt so gemacht, mit persist und mit commit:
Java:
                    entityManager.getTransaction().begin();
                    entityManager.persist(p);
                    entityManager.getTransaction().commit();

bzw.:

Java:
                  if (p != null)
                  {
                      entityManager.getTransaction().begin();
                      entityManager.remove(p);
                      entityManager.getTransaction().commit();
                  }

Scheint auf jeden Fall so zu funktionieren, wie ich es haben möchte.

Noch eine andere Frage: Habe jetzt eine Funktion geschrieben, um beim Beenden des Programmes alle Datenbankzugriffe wieder zu schließen:

Java:
     public void shutdown() {
         entityManager.close();
         EntityManagerUtil.shutdown();
     }

(die 2. Zeile schließt in der Util-Klasse die Factory per close())

Wenn ich das Programm jetzt beende bekomme ich eine Warnung:

[EL Warning]: 2015-09-01 10:06:56.689--session_manager_no_partition

Habe zu der Warnung bei Google nicht viel gefunden... - was bedeutet die und kann ich die ignorieren ?
 

thecain

Top Contributor
In was für einem Kontext setzt du denn JPA ein? Webapplikation (EE-Container), JavaFX oder einfach nur eine Main die diese Methoden so testeshalber aufruft?

Zur Fehlermeldung kann ich dir nur das hier zeigen
Java:
/**
* PUBLIC:
* Destroy current session manager instance.
*/
public void destroy(){
if(context !=null){
managers.remove(context);
}else{
//should not happen
AbstractSessionLog.getLog().log(SessionLog.WARNING,"session_manager_no_partition");
}
context =null;
manager =null;
}

Das ist aus der Source https://eclipse.googlesource.com/ec...stence/sessions/factories/SessionManager.java

Ich arbeite nie mit EclipseLink sondern mit Hibernate, kenne also spezifische Probleme nicht.
 

Nemesys88

Bekanntes Mitglied
Danke erstmal.

Das ganze Session-"Zeugs" hilft mir irgendwie nicht weiter weil das Wort "Session" in meinem Quellcode überhaupt nicht vorkommt.. die muss irgendwie im Hintergrund automatisch laufen... ich hab nur mit der EntityManagerFactory einen EntityManager angelegt und auf dem führe ich jetzt die Transactions aus.

Der Kontext in dem ich JPA einsetze ist eine "größere" JavaFX - Anwendung. (zusammen mit einer HSQL-Datenbank)
 

marcobehler

Mitglied
Hi Nemesys,
du hast da Problem scheinbar schon gelöst, aber was hiess denn bitte:

"Das Problem: Lege ich einen Datensatz Person an muss ich, um den gleichen DS zu löschen, erst das Programm einmal neustarten. "

?
 

Nemesys88

Bekanntes Mitglied
Hi Marco,

damit war gemeint, dass ich innerhalb eines Zyklus indem das Programm offen war (in meinem Fall in Eclipse) ich nicht Datensatz X anlegen und danach sofort wieder löschen konnte. Beendete ich das Programm und startete es neu so war die Datenbank - bzw. genauer: der EntityManager - aktualisiert und ich konnte Datensatz X löschen.
Die Ursache war anscheinend, dass ich vorher merge() benutzt hatte statt persist().

Gruß, Nemesys
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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 MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
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
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
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
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
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
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
M Oracle Problem mit Resultset Datenbankprogrammierung 11
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
W jpmdbc Problem -Beispiel funktioniert nicht Datenbankprogrammierung 9
W Verständnis-Problem JPA Grundlagen Datenbankprogrammierung 5
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
M JPA-Persist Problem Datenbankprogrammierung 2
7 Problem mit Hibernatekonfiguration Datenbankprogrammierung 13

Ähnliche Java Themen

Neue Themen


Oben