手工修改数据引起的hibernate疑难问题

yacki 2007-12-21 01:34:13
使用hibernate查询数据库,第一次得到正确的结果。
这时手工修改DB的内容,再查一次,发现竟然得到的还是原来的结果。

一开始怀疑是hibernate的一级缓存导致的,但清空缓存后发现问题仍然存在。

仔细检查后发现:确定手工修改的数据写入了DB,确定hibernate发起了两次查询,确定MYSQL收到的两条SQL都是正确的(通过MYSQL日志观察)。

服务器端使用了webservice(xfire)


public boolean checkNewVersion(String version) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSessionFactory().openSession();
session.clear();
String hql = "from ClientVersion version where version.ver=? and version.validate=?";
Query query = session.createQuery(hql);
query.setCacheable(false);
query.setString(0, version);
query.setParameter(1, 1);
List list = query.list();
session.close();
if (list == null || list.size() == 0) {
return false;
} else {
return true;
}
}
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yacki 2007-12-22
  • 打赏
  • 举报
回复
你是指commit?是的,我确信数据库中的数据确实已经变化了。
yunxiang 2007-12-21
  • 打赏
  • 举报
回复
手动修改数据库你command了么?
yacki 2007-12-21
  • 打赏
  • 举报
回复
去掉了没有效果...两种写法现在都是可以的。
lanzhengwu 2007-12-21
  • 打赏
  • 举报
回复
session.clear();
把这个去掉试试
还有:query.setParameter(1, 1);
这个没错吗,应该这样写吧..query.setParameter(1, 1,Hibernate.INTEGER);

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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