2017-01-14 5 views
0

I Multi Datensätze mit Transaktions ebean zu aktualisieren bin versucht, aber wenn ich mehr als einen Datensatz bin versucht, ein Fehler auf dem Bildschirm:kann nicht Multi Datensatz Fehler Transaktion aktualisieren Inaktiv

[Illegal: Transaktion ist inaktiv]

eine Idee bitte?

public Result savemulti(String selected) throws PersistenceException { 
    Form<Computer> computerForm = formFactory.form(Computer.class).bindFromRequest(); 
    if(computerForm.hasErrors()) {return badRequest(views.html.computers.editMulti.render(AuthorisedUser.findByEmail(request().username()), computerForm, selected));} 
    java.util.Date dtcreate = new java.util.Date(); 
    String connectedEmail = ctx().session().get("email"); 
    AuthorisedUser singleUser = AuthorisedUser.findByEmail(connectedEmail); 
    String[] ids = selected.split(";"); 
    Transaction txn = Ebean.beginTransaction(); 
    try{ 
     for (String temp : ids){ 
      Computer savedComputer = Computer.find.byId(Long.parseLong(temp)); 
      if (savedComputer != null){ 
       Computer newComputerData = computerForm.get(); 
       savedComputer.company = newComputerData.company; 
       savedComputer.discontinued = newComputerData.discontinued; 
       savedComputer.introduced = newComputerData.introduced; 
       savedComputer.name = newComputerData.name; 
       savedComputer.status = newComputerData.status;   
       savedComputer.moddt = new java.sql.Timestamp(dtcreate.getTime());    
       savedComputer.modby = singleUser.userName; 
       savedComputer.site = singleUser.site;     

       savedComputer.update(); 
       flash("success", "Computer [ " + computerForm.get().name + " ] has been updated"); 
       txn.commit(); 
      } 
     }    
    } finally { 
     txn.end(); 
    }   
    return GO_HOME; 
} 

Antwort

0

ich nur für vor der Transaktion gesetzt und es funktioniert perfekt, danke.

public Result savemulti(String selected) throws PersistenceException { 

    Form<Computer> computerForm = formFactory.form(Computer.class).bindFromRequest(); 
    if(computerForm.hasErrors()) {return badRequest(views.html.computers.editMulti.render(AuthorisedUser.findByEmail(request().username()), computerForm, selected));} 

    java.util.Date dtcreate = new java.util.Date(); 
    String connectedEmail = ctx().session().get("email"); 
    AuthorisedUser singleUser = AuthorisedUser.findByEmail(connectedEmail); 


    String[] ids = selected.split(";"); 

      for (String temp : ids) 
      { 
     Transaction txn = Ebean.beginTransaction(); 


     try 
     { 


      Computer savedComputer = Computer.find.byId(Long.parseLong(temp)); 
      if (savedComputer != null) 
      { 
       Computer newComputerData = computerForm.get(); 
       savedComputer.company = newComputerData.company; 
       savedComputer.active = newComputerData.active; 
       savedComputer.discontinued = newComputerData.discontinued; 
       savedComputer.introduced = newComputerData.introduced; 
       savedComputer.name = newComputerData.name; 
       savedComputer.status = newComputerData.status;   
       savedComputer.moddt = new java.sql.Timestamp(dtcreate.getTime());    
       savedComputer.modby = singleUser.userName; 
       savedComputer.site = singleUser.site;     

       savedComputer.update(); 

       txn.commit(); 
      } 
      }    

      finally { txn.end(); }   
} 

    flash("success", "Computers [ " + selected + " ] has been updated"); 

    return GO_HOME; 
} 
Verwandte Themen