Transaktion nicht erfolgreich gestartet (beim tx.commit() ist umgeben von einer if-Bedingung)

Erste mal, dass ich lief in dieser Fehlermeldung habe ich inmitten meiner tx.commit() mit einer if-Bedingung, aber ich bin nicht sicher, warum ich bin immer noch diese Fehlermeldung.

Struts Problem Report

Struts has detected an unhandled exception:
Messages:   
Transaction not successfully started
File:   org/hibernate/engine/transaction/spi/AbstractTransactionImpl.java
Line number:    200
Stacktraces
org.hibernate.TransactionException: Transaction not successfully started

    org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:200)

Nachdem ein Produkt ausgewählt wurde, durch den Benutzer, in meiner main Funktion, ich nenne zwei Funktionen wie folgt.

Erste Funktion zum abrufen des Objekts des ausgewählten Produkts.
Zweite Funktion, um zu überprüfen, ob ausgewählte Benutzer hat das Produkt daher gibt es true zurück, wenn der Kunde hat das Produkt sonst false zurück;

Funktion 1

  ....

    Product pro = new Product();
    final Session session = HibernateUtil.getSession();
    try {
        final Transaction tx = session.beginTransaction();
        try {

            pro = (Product) session.get(Product.class, id);

            if (!tx.wasCommitted()) {    
                     tx.commit();
            }
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
        }
    } finally {
        HibernateUtil.closeSession();
    }
   .....

Funktion 2

 .....
 final Session session = HibernateUtil.getSession();
        try {
            final Transaction tx = session.beginTransaction();
            try {
                User user = (User) session.get(User.class, id);

                if (!tx.wasCommitted()) {    
                       tx.commit();
                }

                if(client.hasProduct(proId)){
                         return client.getProduct(proId);
                }
                return false;
            } catch (Exception e) {
                tx.rollback();                 <<<Error is on this line
                e.printStackTrace();
            }
        } finally {
            HibernateUtil.closeSession();
        }
  ....        
  • Ich denke, Sie brauchen nicht initialisiert Transaktion mit der definitiven.
  • heißt das, es sollte nicht endgültig sein? oder sollte es nicht initialisiert werden überhaupt?
  • initialisieren ohne Finale.initialisieren einer Sitzung ohne ein Finale zu.
  • Haben Sie versucht, dieses: if (tx!=null) tx.rollback();
  • danke, aber ich brauche, um zu wissen, was das auslösen der Ausnahme aus diesen einfachen codes nicht nur die Handhabung, es
  • Könnten Sie bitte post die gesamte stack-trace?
  • ok ich werde
  • Ist diese Zeile auf Funktion 2 aufrufende Methode von Funktion 1: return client.getProduct(proId); ???
  • Nein, die Methode ist getrennt
  • Dies tut getProduct tun new Transaction tx = session.beginTransaction(); ?
  • ja, es tut es gibt das Objekt zurück, von Produkt
  • Ich glaube, der Winterschlaf steht vor einem problem in der Transaktion Anfang, so fügen Sie einige mehr debug-Anweisung vor und nach beginTransaction() einfach zu prüfen, ob die Transaktion begonnen, so dass auf andere Ausnahme, die Sie wiederherstellen können es

InformationsquelleAutor J888 | 2013-11-25
Schreibe einen Kommentar