用Hibernate查询数据库里的信息,有时候每次查询结果都不一样

letingoo 2015-05-17 11:02:36
lz刚开始学Java EE,大作业是用struts和hibernate写一个购物网站,有一个模块是查看已购买的订单,这个程序跑起来,买几个东西,数量一多这个功能就不正常了,刚开始还能正确返回,多点几下有时候就莫名其妙的少了几个订单后。就是每次执行的结果都可能不一样,但是我直接在MySQL查询结果是符合逻辑的.求破

这是dao里的代码,根据用户id查询其订单号
	public List<Integer> getOrderId(int user_id) {

getSession().clear();

String sql = "select * from orders where user_id=" + user_id;

List<Orders> orders = getSession().createSQLQuery(sql).addEntity(Orders.class).list();

List<Integer> results = new ArrayList<Integer>();

for (Orders order : orders){
results.add( order.getId() );
}

System.out.println(results);
return results;
}


这是在dao里增加一条订单信息
public int save(Orders transientInstance) {
log.debug("saving Order instance");
try {
Transaction tr = getSession().beginTransaction();
getSession().save(transientInstance);
log.debug("save successful");
tr.commit();

getSession().close();
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
return transientInstance.getId();
}
...全文
329 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
光光-Leo 2015-05-19
  • 打赏
  • 举报
回复
以前我也遇到过查询结果异常的问题,不过跟你这个不是一个问题,你可以先看一下这篇文章http://blog.csdn.net/u012116457/article/details/43162139 给你个方向:我认为可能是配置文件的问题,比如连接池的问题。 你可以试着从这方面下手
letingoo 2015-05-17
  • 打赏
  • 举报
回复
引用 1 楼 u013762572 的回复:
tr.commit(); getSession().close(); 改成 getSession().close(); tr.commit(); 位置换一下。。。
哦,还是不行。。。
microhex 2015-05-17
  • 打赏
  • 举报
回复
tr.commit(); getSession().close(); 改成 getSession().close(); tr.commit(); 位置换一下。。。

81,091

社区成员

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

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