在spring mvc中连接数据库时如何处理CannotCreateTransactionException

时间:2014-08-12 11:07:34

标签: hibernate spring-mvc

在我的应用程序中,我想处理CannotCreateTransactionException,sql异常和其他异常。我是春天的mvc和hibernate的新手。如果有什么不是最好的方式那么请告诉我,以便我可以改变我的代码。

在我的控制器中的mehtod是这样的

@RequestMapping(value="/validatingmobilenumber",method = RequestMethod.GET)
    @ResponseBody() 
    public String validateMobileNumber(@RequestParam("mobilenumber") String mobilenumber)
    {
        try
        {
            User userDetails=userServices.getUserByPhoneNumber(mobilenumber);
            if(userDetails.getUserID()!=0)
            {               
                return "mobilenumber already exists";
            }
            else
                return "new mobilenumber";
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return "Unable to connect to DB";//if any type of exception occurred this is going to returned.
    }

我这样的服务

@Service("userServices")
public class UserServicesImpl implements UserServices {

    @Autowired
    UserDao userDao;

    @Override
    public User getUserByPhoneNumber(String phoneNumber) {

        return userDao.getUserByPhoneNumber(phoneNumber);
    }
}

我的道歉

@Transactional
@Repository("UserDao")
public class UserDaoImpl implements UserDao {

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public User getUserByPhoneNumber(String phoneNumber) {

        User userDetails=new User();
        User userDetails1=new User();

        try
        {
            if((userDetails1=(User) sessionFactory.getCurrentSession().createQuery("from User where phoneNumber=:phoneNumber")
                .setParameter("phoneNumber", phoneNumber).uniqueResult())!= null)
            {

                return userDetails1;
            }
        }
        catch(Exception e)
        {
            userDetails.setUserID(0);

        }

        return userDetails;
    }
}

1 个答案:

答案 0 :(得分:0)

我知道这个帖子有点旧。希望我会帮助别人。

这是什么问题?你有问题,也有解决方案!

在Ajax调用中,你将完全像你现在所做的那样,你将在你的jsp页面中处理响应,如果没有Ajax调用,你将需要将页面名称作为字符串返回并附加错误你想要在model.addAttribute("errorMessage", errorMessage);

这样的模型对象中