Hallo, ich stehe mal wieder vor einem kleinen Problemchen. Beim Löschen der Daten wird aus der GUI eine Methode aufgerufen:
public void deleteData(Object object) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); Customer customer = (Customer) object; String hql = "delete from Customer where strLastname = '" + customer.getStrLastname() + "'"; Query query = session.createQuery(hql); System.out.println(hql); tx.commit(); session.close(); }
Wenn ich jetzt den String mal so auf der Konsole ausgebe, dann heisst das bspw.
delete from Customer where strLastname = 'Maier', also so weit alles i.o.
wenn ich jetzt diesen string per Copy&Paste in der h2 database-console eingebe, dann funktioniert er auch.
allerdings, wenn ich ihn in der query ausführe, dann funktioniert es nicht. keine fehlermeldung, nichts, er macht es einfach nur nicht, fertig. hab ich da einen syntaxfehler (ich wüsste nicht wo?!?) oder sonst irgendwie einen denkfehler.
dann gibt es ja noch die möglichkeit mit session.delete(customer).
da habe ich dann allerdings eine fehlermeldung ...
8750 [AWT-EventQueue-0] INFO org.hibernate.event.def.DefaultDeleteEventListener - handling transient entity in delete processing
... mit der ich als anfänger wenig anfangen kann, die ich auch per googlen nicht gefunden habe (zumindest nicht dass, was mir meinen fehler erklärt)
ich könnte mir vorstellen, dass es etwas damit zu tun haben könnte, dass die ID (also mein hibernate-Primärschlüssel, in den Customer-Objekten so nicht drinsteht), wobei ich mir noch nicht ganz im klaren darüber bin, wo diese ID abgeblieben ist...
|