关于Hibernate的一个诡异问题

haojian11 2012-10-15 11:53:54
我们的应用是一个网页游戏服务端,用Hibernate查询一批数据的时候,结果有时候会只有1条,实际应该是多条记录。改用jdbc查询,每次都是多条记录,好几个查询的地方都出现这个问题,求高手指点!
...全文
249 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
g601014961 2012-10-17
  • 打赏
  • 举报
回复
试试将(List<JuDian>)getHibernateTemplate().find(hql, BuLuoService.getJudianStartTime())中的BuLuoService.getJudianStartTime()转换为java.sql.Date类型
dracularking 2012-10-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

谢谢各位热心朋友的回答。
启动服务器的时候,也会执行这个查询,结果是正确的。
每天会定时查询一次,到一定的时候,会出问题。时间应该没有问题。
[/Quote]
可不可以在hibernate查询你觉得有问题当时 换成hql对应的sql去数据库直接查?
失落夏天 2012-10-16
  • 打赏
  • 举报
回复
感觉应该是你的代码有点问题,感觉那个List接受存储数据的时候不是添加,而是写成替换了。
你把那一段代码发出来看一下。
Lang_JK 2012-10-15
  • 打赏
  • 举报
回复
hibernate懒加载问题。。
qharkey 2012-10-15
  • 打赏
  • 举报
回复
都是牛人!
haojian11 2012-10-15
  • 打赏
  • 举报
回复
谢谢各位热心朋友的回答。
启动服务器的时候,也会执行这个查询,结果是正确的。
每天会定时查询一次,到一定的时候,会出问题。时间应该没有问题。
墙角在唱歌 2012-10-15
  • 打赏
  • 举报
回复
或者只能去掉where条件了 在试试
墙角在唱歌 2012-10-15
  • 打赏
  • 举报
回复
你检查一下 .hbm中的类型是不是错了 默认的好像不是datatime
dracularking 2012-10-15
  • 打赏
  • 举报
回复
可以试试把hql的where条件去掉,还会不会返回1条?不是的话可以确定是where条件的问题
haojian11 2012-10-15
  • 打赏
  • 举报
回复
谢谢楼上各位的回答,java程序里面的startTime是 java.util.Date类型,数据库里面是datetime类型(mysql),代码如下:


public static Date getJudianStartTime(){
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.HOUR_OF_DAY, 5);
startTime.set(Calendar.MINUTE, 0);
startTime.set(Calendar.SECOND, 0);
startTime.set(Calendar.MILLISECOND, 0);
startTime.add(Calendar.DAY_OF_MONTH, -6);

return startTime.getTime();
}


hao125366967 2012-10-15
  • 打赏
  • 举报
回复
startTime 在数据类型。。很重要。。是不是string类型。。不是datetime类型。。。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

代码如下:
Java code


public List<JuDian> getJuDianLatestInfo(){
String hql= "from JuDian where startTime >= ?";
return (List<JuDian>)getHibernateTemplate().find(hql, BuLuoService.g……
[/Quote]

语句也没什么毛病、会不会是日期处理的问题、

你的BuLuoService.getJudianStartTime()返回的类型是什么的?

startTime 在数据库中的类型是什么?
haojian11 2012-10-15
  • 打赏
  • 举报
回复
代码如下:
	

public List<JuDian> getJuDianLatestInfo(){
String hql= "from JuDian where startTime >= ?";
return (List<JuDian>)getHibernateTemplate().find(hql, BuLuoService.getJudianStartTime());
}
a8509190 2012-10-15
  • 打赏
  • 举报
回复
对啊有代码出来看看
liangtu 2012-10-15
  • 打赏
  • 举报
回复
贴具体的代码

67,549

社区成员

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

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