SSH用通用dao更新出现的问题
2017-03-20 22:32
134 查看
再把SSH框架搭好以后,dao层采用了通用dao来实现,http://1194867672-qq-com.iteye.com/blog/1159918这个是一种实现方法,但是本人亲测,需要在dao的实现类findByHQL方法修改一下,query.setParameter(i, params); 这句话需要把params改成param[i],最后是这样的:
上面是使用注解实现的,但是我用的是xml配置来实现的,两种方法都可以,前提是需要你把事务配置完成了,在上一篇我已经配置完成了,但是我在保存更新的时候出现了问题,困扰我了好几天,一直没有找到原因,用this.getSession().update(entity);的时候明明数据库里面有原来的数据他就是不更新,而且我也denug过了,当时怀疑是不是Hibernate中的数据不是持久态,所以不能更新,后来发现不对,后来又加上了this.getSession().flush();还是不行,不更新数据,他会插入一条新的数据
最后是我想明白了,原来是因为自己的逻辑有问题,因为我跟本没有获取到当前数据的id,我就在更新了,所以才造成了我的更新失败,不光是更新失败,删除也是失败的,我更加确定了是我的逻辑有问题,所以不更新的时候还是先从自身找找原因吧,当时我试过this.getSession().saveOrUpdate(entity);也添加过this.getSession().flush();真是愚蠢,笨啊
对了,我认为其实通用dao没有必要写一个更新一个保存,他们都可以用saveOrUpdate(entity)来进行实现,有的话就会更新,没有的话就会保存,何必再写两个呢?
public List<T> findByHQL(String hql, Object... params) { // TODO Auto-generated method stub Query query = this.getSession().createQuery(hql); for (int i = 0; params != null && i < params.length; i++){ query.setParameter(i, params[i]); } return query.list(); }
上面是使用注解实现的,但是我用的是xml配置来实现的,两种方法都可以,前提是需要你把事务配置完成了,在上一篇我已经配置完成了,但是我在保存更新的时候出现了问题,困扰我了好几天,一直没有找到原因,用this.getSession().update(entity);的时候明明数据库里面有原来的数据他就是不更新,而且我也denug过了,当时怀疑是不是Hibernate中的数据不是持久态,所以不能更新,后来发现不对,后来又加上了this.getSession().flush();还是不行,不更新数据,他会插入一条新的数据
最后是我想明白了,原来是因为自己的逻辑有问题,因为我跟本没有获取到当前数据的id,我就在更新了,所以才造成了我的更新失败,不光是更新失败,删除也是失败的,我更加确定了是我的逻辑有问题,所以不更新的时候还是先从自身找找原因吧,当时我试过this.getSession().saveOrUpdate(entity);也添加过this.getSession().flush();真是愚蠢,笨啊
对了,我认为其实通用dao没有必要写一个更新一个保存,他们都可以用saveOrUpdate(entity)来进行实现,有的话就会更新,没有的话就会保存,何必再写两个呢?
相关文章推荐
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- bugzilla更新出现perl模块无法安装问题解决办法
- 安装或更新到IE8后, VS2008 向导出现的Add Variable等等问题的 解决办法
- svn错误:更新源码出现校验和不匹配问题
- 在写自动更新程序中出现的问题
- 100% 解决 Symbian 安装软件时出现“更新错误”或“无法安装”的问题
- 解决安装软件时出现“更新错误”或“无法安装”的问题
- bugzilla更新出现perl模块无法安装问题解决办法 推荐
- 100%解决安装软件时出现“更新错误”或“无法安装”的问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- Vs 2008 sp1更新后出现的问题!
- 关于Javascript与表单结合时出现"对象不支持此属性或方法"的问题总结(不断更新中...)
- 更新源码出现校验和不匹配问题
- 关于SSH登录出现Connection reset by peer 问题。
- Wsus问题之存储更新文件的磁盘已满或出现故障
- SSH架构易出现的问题之Error creating bean with name '*' defined in file [*.xml]
- 如何解决新的发布,却出现读不到新的更新程序问题
- ORACLE学习中出现的问题(持续更新中)
- 在安装Windows 更新MS05-019,Windows2003 SP1或SP2后出现Domino邮件邮递性能下降与网络连通性问题