java - IllegalArgumentException: Entity must be managed to call remove -


controller page has following code

                bigdecimal id=new bigdecimal(request.getparameter("empid"));                 employee.setempno(id);                 flag = factory.removeemployee(employee); 

transactionfactory class

    public final class entitytransactionfactory implements transactionfactory{      @persistencecontext     private entitymanagerfactory factory;     private entitymanager manager;     @resource     private usertransaction transaction;     private static final transactionfactory transaction = new entitytransactionfactory();      private entitytransactionfactory() {      }      public static transactionfactory getinstance() {         return transaction;     }       /**      * @return factory      */     @override     public entitymanagerfactory getfactory() {         factory= persistence.createentitymanagerfactory("samplebeanpu");         return factory;     }      /**      * @return manager      */     @override     public entitymanager getmanager() {         manager=getfactory().createentitymanager();         return manager;     }      /**      * @return transaction      */     @override     public usertransaction gettransaction() {         try {             transaction = (usertransaction) new initialcontext().lookup("java:comp/usertransaction");         } catch (namingexception e) {             transaction=null;         }         return transaction;     } } 

emp variable name of emp type.

        transactionfactory factory=entitytransactionfactory.getinstance();         factory.gettransaction().begin();         factory.getmanager().jointransaction();          emp ref= factory.getmanager().getreference(emp.class, emp.getempno());         system.out.println(ref.getename());         factory.getmanager().remove(factory.getmanager().merge(ref));         system.out.println(factory.gettransaction().getstatus());         factory.gettransaction().commit();         system.out.println(factory.gettransaction().getstatus());         //factory.getmanager().flush();         factory.getmanager().close();         factory.getfactory().close(); 

but, getting following exception, pointing on above code.

 java.lang.illegalargumentexception: entity must managed call remove: com.entity.emp[ empno=1234 ], try merging detached , try remove again. 

as suggested @jbnizet

i'm creating instance of entitymanagerfactory once putting private constructor , retrieving instance getter method of class.

and removing entity used following code

        emp ref = factory.getmanager().find(emp.class, emp.getempno());                    factory.getmanager().remove(ref); 

and, works.!!


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -