Hibernate: INSERT ohne Effekt in der Datenbank

flo_hr

Mitglied
Hey... :) ,

ich habe ein merkwürdiges Problem beim Speichern über Hibernate:
Folgende Umgebung habe ich:
- Tomcat 6.0.32
- jdk 1.6.24
- hibernate 3

Ich möchte in meinem Projekt einen ganz einfach Datensatz über Hibernate in die Datenbank speichern. Habe auch schon Erfahrung mit Hibernate.
Das speichern eines Datensatzes klappt auch wunderbar mit einer MySQL DB 5.1x.
Jetzt habe ich eine MySQL DB 5.5.14 installiert und das speichern funktioniert nicht mehr.

Im LOG sehe ich das Hibernate ein INSERT macht:
Hibernate: insert into user (login_name, login_password, id) values (?, ?, ?)

Es fällt auch keine Exception oder sonst eine Fehlermeldung. Der Datensatz kommt aber einfach nicht mehr in der DB an. Datensätze auslesen funktioniert aber.
Sobald ich auf die MySQL DB 5.1x umstelle funktioniert wieder alles.

Verwende auch schon den neuste JDBC Treiber.

Hat irgendjemand eine Idee wo das Problem liegen könnte****

vielen dank und viele grüße
florian
 
Also ohne mich jetzt mit Hibernate auszukennen würde ich mal in die Rechte der DB gucken. Alternativ solltest du dir mal eine kleine App schreiben die Daten in die DB einträgt. Sollte das funktionieren liegt es warscheinlich an Hibernate ... sollte aber auch die Test-App irgendwie fehlschlagen solltest du in dieser wenigstens etwas mehr Exception-Handling haben um zu sehen ob nicht doch irgendwelche Exceptions von Hibernate geschluckt werden.
 
Habe mittlerweile was herausgefunden.

Folgendes hat mit der Verwendung von MySQL DB 5.1 funktioniert:
Code:
public void saveUser(User user) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        session.saveOrUpdate(user);
        session.flush();
        session.close();
}

Mit der Verwendung von MySQL DB 5.5 muss ich die Transaktion commiten, dann kommt es auch in der DB an.
Code:
public void saveUser(User user) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction transaction = session.beginTransaction();
        session.saveOrUpdate(user);
        session.flush();
        transaction.commit();
}

ich setze mal den Punkt auf erledigt ;) ...

trotzdem vielen dank für deine Antwort...
gruss florian
 
Naja das du die Transaktion auch commiten musst solltest du eigentlich wissen wenn du schon mit einer transaktionellen Datenbank arbeitest.
 
Zurück