Hallo erstmal. Ich arbeite gerade an einem mehr oder weniger komplexen Web-Projekt. Verwendet wird Tomcat + MySQL + Hibernate3.1.
Bisher funktionierte alles pipifein (dachte ich).. speichern, editieren, löschen, ...
Doch ich habe nun folgenden Bug entdeckt. Wenn Daten editiert werden (das bedeutet im Endeffekt ich hole mir ein Objekt aus der Datenbank, verändere es, speichere es ab) dann stehen die editierten Werte auch in der Datenbank und zwar genau da wo sie hingehören.
Wenn ich sie aber wieder aufrufen und anzeigen will stehen ... und jetzt kommts ...
manchmal die aktuellen Werte drinnen, manchmal die Werte vor dem update... ja manchmal sogar noch ältere Werte. Wie gesagt: In der Datenbank stimmt es. Wenn ich den Server neustarte passt auch wieder alles.
Es scheint als ob das Problem beim auslesen aus der Datenbank besteht. Hab mit einem Mitarbeiter geredet und er meinte, dass das Problem viell. beim caching liegt. Sind damit aber auch auf keinen grünen zweig gekommen.
Zum auslesen aus der Datenbank verwende ich folgende Methode:
Code:
public static List<Data> listWhere(Class c, String query){
//Session session = new Configuration().configure().buildSessionFactory().openSession();
try {
Session session = HibernateUtil.currentSession();
//Transaction tx = session.beginTransaction();
//session.evict(c);
List list = session.createQuery("from " + c.getName() + " " + query).setCacheable(true).setCacheMode(CacheMode.REFRESH).list();
//List<Data> result = (List<Data>) list;
//tx.commit();
// HibernateUtil.closeSession();
//session.close();
return list;
} catch (HibernateException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
Alles was mit SELECT wird zu diesem Ding delegiert.
Gibt es irgendwelche Vorschläge? Wäre für alles offen.
Greez Harald