java - set @Transactional value at run time -
i have 4 transaction managers in spring context. based on logic want invoke respective transaction manager. how should ? following code getting exception
java.lang.classcastexception: org.hibernate.action.internal.delayedpostinsertidentifier cannot cast java.math.biginteger
however, if give single @transactional(value = "myservicetransactionmanager", propagation = propagation.requires_new) @ class level works fine, scenario. rest fail.
@service public class myserviceimpl implements myservice { @autowired mydao mydao; @override public someresponse savequeryresponseobject(someresponse someresponse) { someresponse returnobject = null; int logicvalue = getlogicvalue(); switch (logicvalue) { case 0: returnobject = callforzero(someresponse); break; case 1: returnobject = callforfirst(someresponse); break; case 2: returnobject = callforsecond(someresponse); break; case 3: returnobject = callforthird(someresponse); break; } return returnobject; } @transactional(value = "myservicetransactionmanager", propagation = propagation.requires_new) private someresponse callforzero(someresponse someresponse) { return mydao.saveresponse(someresponse); } @transactional(value = "myservice1transactionmanager", propagation = propagation.requires_new) private someresponse callforfirst(someresponse someresponse) { return mydao.saveresponse(someresponse); } @transactional(value = "myservice2transactionmanager", propagation = propagation.requires_new) private someresponse callforsecond(someresponse someresponse) { return mydao.saveresponse(someresponse); } @transactional(value = "myservice3transactionmanager", propagation = propagation.requires_new) private someresponse callforthird(someresponse someresponse) { return mydao.saveresponse(someresponse); } }
Comments
Post a Comment