【高分求解答】测试方法运行正常能够失去数据,放到Tomcat上边运行就不能够得到数据了
【高分求解答】测试方法运行正常能够得到数据,放到Tomcat上边运行就不能够得到数据了
不知道问题出在哪是最烦心的事情,容在下细细道来。
要实现的功能:使用hql查询,通过查找Email得到用户的对象
首先,看一下Dao层通过Email查询的方法:getUserInfoByEmail(String email)
然后,我写了一个测试方法:testGetByEmail()
我们运行这个测试方法,在控制台能够打印下边的信息:
但是,问题来了。我们把这个工程运行在Tomcat环境下,也同样是调用这句话:
userInfoService.getUserInfoByEmail("1589987691@qq.com")
然后在控制台仅仅打印出来了这句话:
我们看下测试方法打印出来的东西,仅仅第一行是对应着的。可以肯定的是getUserInfoByEmail(String email)方法中的这段代码出问题了:
但是没有打印出来任何的异常。
求大神解答,真心难到我了=.=
------解决思路----------------------
Session session = sessionFactory.getCurrentSession();
看看这个session还取到了?都加几处输出或者日志,看看到底是哪步走不下去了或者抛异常了
------解决思路----------------------
Session session = sessionFactory.getCurrentSession(); 从这里设置一个断点,调试看看走到哪一步走不下去了
然后在分析原因,现在不能去确定是哪里出了问题
------解决思路----------------------
既然你肯定是这段代码出问题
你为何不把HibernateException 改成Exception试试呢
不知道问题出在哪是最烦心的事情,容在下细细道来。
要实现的功能:使用hql查询,通过查找Email得到用户的对象
首先,看一下Dao层通过Email查询的方法:getUserInfoByEmail(String email)
@Override
@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)
public UserInfo getUserInfoByEmail(String email){
System.out.println("dao:"+email);
Session session = sessionFactory.getCurrentSession();
String hql = "from UserInfo as user where user.User_Email=?";
Query query = null;
try {
query = session.createQuery(hql);
query.setString(0, email);
} catch (HibernateException e) {
System.out.println(e);
e.printStackTrace();
}
UserInfo userInfo = null;
if(query.list()!=null){
userInfo = (UserInfo) query.list().get(0);
}
System.out.println("方法结束");
return userInfo;
}
然后,我写了一个测试方法:testGetByEmail()
@Test
public void testGetByEmail(){
UserInfo userInfo = userInfoService.getUserInfoByEmail("1589987691@qq.com");
System.out.println(userInfo.getUserInfo_Name());
}
我们运行这个测试方法,在控制台能够打印下边的信息:
dao:1589987691@qq.com
Hibernate: select userinfo0_.UserInfo_Id as UserInfo1_0_, userinfo0_.UserInfo_Name as UserInfo2_0_, userinfo0_.User_Pwd as User3_0_, userinfo0_.User_Email as User4_0_, userinfo0_.User_Headpicurl as User5_0_, userinfo0_.User_Marks as User6_0_, userinfo0_.User_Money as User7_0_, userinfo0_.User_RoleId as User8_0_ from UserInfo userinfo0_ where userinfo0_.User_Email=?
Hibernate: select userinfo0_.UserInfo_Id as UserInfo1_0_, userinfo0_.UserInfo_Name as UserInfo2_0_, userinfo0_.User_Pwd as User3_0_, userinfo0_.User_Email as User4_0_, userinfo0_.User_Headpicurl as User5_0_, userinfo0_.User_Marks as User6_0_, userinfo0_.User_Money as User7_0_, userinfo0_.User_RoleId as User8_0_ from UserInfo userinfo0_ where userinfo0_.User_Email=?
方法结束
青春威武 //这个是我在测试方法里边做的,可以看出能够获得对象
但是,问题来了。我们把这个工程运行在Tomcat环境下,也同样是调用这句话:
userInfoService.getUserInfoByEmail("1589987691@qq.com")
然后在控制台仅仅打印出来了这句话:
dao:1589987691@qq.com
我们看下测试方法打印出来的东西,仅仅第一行是对应着的。可以肯定的是getUserInfoByEmail(String email)方法中的这段代码出问题了:
try {
query = session.createQuery(hql);
query.setString(0, email);
} catch (HibernateException e) {
System.out.println(e);
e.printStackTrace();
}
但是没有打印出来任何的异常。
求大神解答,真心难到我了=.=
------解决思路----------------------
Session session = sessionFactory.getCurrentSession();
看看这个session还取到了?都加几处输出或者日志,看看到底是哪步走不下去了或者抛异常了
------解决思路----------------------
Session session = sessionFactory.getCurrentSession(); 从这里设置一个断点,调试看看走到哪一步走不下去了
然后在分析原因,现在不能去确定是哪里出了问题
------解决思路----------------------
try {
query = session.createQuery(hql);
query.setString(0, email);
} catch (HibernateException e) {
System.out.println(e);
e.printStackTrace();
}
既然你肯定是这段代码出问题
你为何不把HibernateException 改成Exception试试呢