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
Post a Comment