dimanche 22 février 2015

how to rollback in entitymanager createNativeMethod

I am using native method of entity manager and I want to rollback when some error occurs.For this I tried @Transactional annotation but this does not rollback.Below is my sample code


controller



@Autowired
ServiceImpl ServiceImpl;



@RequestMapping("/saveinfo")
@ResponseBody
@Transactional
public String saveinfo(Long id)
{


ServiceImpl.saveInfo(id);



}


Service class



@Autowired


DAOImpl daoImpl;



@Transactional
public String saveinfo(Long id)
{
daoImpl.saveInfo1(id);

daoImpl.saveInfo12(id);
daoImpl.saveInfo12(id);

}


DAO class



@Override
public BigInteger saveInfo11() {

Query query = entityManagerUtil.entityManager().createNativeQuery("insert query");
return (BigInteger)query.getSingleResult();
}
@Override
public BigInteger saveInfo12() {

Query query = entityManagerUtil.entityManager().createNativeQuery("insert query");
return (BigInteger)query.getSingleResult();
}
@Override
public BigInteger saveInfo13() {

Query query = entityManagerUtil.entityManager().createNativeQuery("insert query");
return (BigInteger)query.getSingleResult();
}


Now in the above codes,


If I have some runtime error in saveInfo3() then I want to rollback methods of saveInfo1() and saveInfo2()


This is the way I did but it did not rollback,so Please tell me how to do


Aucun commentaire:

Enregistrer un commentaire