SSH 新建用户登录不了

keithcai 2011-07-16 11:03:01
刚接触SSH框架,就做了个注册登录的练习,捣腾了5天终于弄出来,但是有一个问题,新建的用户无法用来登录,以前建的就可以登录,关掉重开一个刚刚新建的就可以登录了。我觉得应该是template没有更新,但是不知道怎么更新。我把UserDAOImpl的代码贴出来。求知道啊~~~

package hibernate;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
private HibernateTemplate template;
public HibernateTemplate getTemplate() {
return template;
}
public void setTemplate(HibernateTemplate template) {
this.template = template;
}
public UserDAOImpl() {
template=this.getHibernateTemplate();
}
public void save(User user){
// template.save(user);
Session session=HibernateSessionFactory.getSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.save(user);
tx.commit();
}
catch (Exception e){
tx.rollback();
}
finally{
session.close();
}
}
public boolean exists(User user){
return (getPasswordMD5(user)!=null)?true:false;
}
public String getPasswordMD5(User user){
String hql = "select passwordMD5 from User u where u.user=?";
List<String> passwordMD5=template.find(hql, user.getUser());
if (passwordMD5.size() > 0) {
return passwordMD5.get(0);
}
return null;

}
}
...全文
276 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
keithcai 2011-07-19
  • 打赏
  • 举报
回复
还有我觉得应该不是session的问题,是template的问题。。
找了好久没找到,不知道Template怎么刷新
keithcai 2011-07-19
  • 打赏
  • 举报
回复
其实我是想用spring的,但是template.save(user);没有反应,我才用Hibernate写的save(User user)
刚接触SSH,单个来还好,整和起来就有点乱,大家可不可以说的详细点,帮我理一理思路~谢谢啊
keithcai 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jilieshi 的回复:]
passwordMD5
是表中的列名么?
select passwordMD5 from User u where u.user=?
List<String> passwordMD5=template.find(hql, user.getUser());
楼主你为什么要用一个list来接收
[/Quote]
find 返回的只有list嘛
福来哥 2011-07-19
  • 打赏
  • 举报
回复
在Spring的管理下,
Session session=HibernateSessionFactory.getSession();应该是取不到值的。
既是extends HibernateDaoSupport,何必要写

private HibernateTemplate template;
public HibernateTemplate getTemplate() {
return template;
}
public void setTemplate(HibernateTemplate template) {
this.template = template;
}

直接super.getHibernateTemplate.save(user);
一句话不就好了吗?
zn85600301 2011-07-19
  • 打赏
  • 举报
回复
关掉重开一个刚刚新建的就可以登录了

肯定是数据库事务没提交 你没用spring的事务框架的话
提交先flush下session
session.flush();
tx.commit();
小基 2011-07-19
  • 打赏
  • 举报
回复
passwordMD5
是表中的列名么?
select passwordMD5 from User u where u.user=?
List<String> passwordMD5=template.find(hql, user.getUser());
楼主你为什么要用一个list来接收

RuanJava 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ticmy 的回复:]
图像上的女孩不错
[/Quote]
+1
shixitong 2011-07-19
  • 打赏
  • 举报
回复
把session再刷新下呢?
keithcai 2011-07-19
  • 打赏
  • 举报
回复
顶一下下
keithcai 2011-07-19
  • 打赏
  • 举报
回复
找到问题了~确实是事务的问题
我用回template.save(user);后就可以登录啦,但是数据库里确没有插入,插入没有提交到数据库
然后查了一下,在Hibernate.cfg.xml里加了一句<propertyname="hibernate.connection.autocommit">true</property>
就可以了
谢谢各位的热心回答,对我帮助很大哦
小基 2011-07-19
  • 打赏
  • 举报
回复
调试一下吧
大个断点看看程序跑到哪走不下去了
比如看看passwordMD5 size是多少啊 之类的
keithcai 2011-07-17
  • 打赏
  • 举报
回复
什么事物啊?
注册肯定是成功了的~在数据库里看也更新了的,但是登录不了哦。
重开就可以登录
keithcai 2011-07-16
  • 打赏
  • 举报
回复
可能是我spring没搭好吧。。。
template.save(user);没反应。。。
xianaofei 2011-07-16
  • 打赏
  • 举报
回复
// template.save(user);
你为什么不直接用spring封装的方法啊
这个让你注释了是什么意思
龙四 2011-07-16
  • 打赏
  • 举报
回复
图像上的女孩不错
grzrt 2011-07-16
  • 打赏
  • 举报
回复
是不是事务的问题?

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧