2008-07-01
一个愚蠢的错误
关键字: 告诫自己要仔细
在Hibernate使用中我犯了一个严重的低级错误,就是把字段的映射类型写错了,一个及其隐蔽的错误,真是害人不潜呀。下面把Hiberante映射文件展示如下:
以上是一个错误的映射文件。我的数据表结构是这样定义的:
其中
以下是改后的XML文件:
<class name = "SystemLog" table="SS_SysLog" dynamic-insert="false" dynamic-update="true"> <id name ="id" column = "ID" type ="integer"> <generator class="native"/> </id> <property name="data" type="date"/> <property name="time" type="date"/> <property name="level" type="string" length="10"/> <property name="message" type="text"/> </class>
以上是一个错误的映射文件。我的数据表结构是这样定义的:
CREATE TABLE `ss_syslog` ( `id` int(11) NOT NULL auto_increment, `data` date default NULL, `time` datetime default NULL, `level` varchar(10) character set gb2312 default NULL, `message` mediumtext character set gb2312, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT;
其中
引用
`time` datetime default NULL,
是datetime类型的。我要做的工作就是按照一个时间段来查找记录。查询条件是where time between startTime and endTime即根据time字段查询。以下是我写的HQL代码:
from SystemLog sysLog where sysLog.time between :starTime and :endTime很简单只是一执行就找不到记录,而且后台没有出错的信息。真是很隐蔽。坚持调试一天后找到题的真正原因。即:Hibernate配置文件中字段类型不匹配由于Hiberante配置文件中是这样描述time字段的
<property name="time" type="date"/>即:time是date型的。注:此处的date并不是指Java中的date而是数据库的数据类型。所以,在执行上面的HQL语名时,日期中的时间部分被自动截掉,导致找不到记录,解决办法很简单把date改成timestamp就一切OK了。哈哈。
以下是改后的XML文件:
<class name = "SystemLog" table="SS_SysLog" dynamic-insert="false" dynamic-update="true"> <id name ="id" column = "ID" type ="integer"> <generator class="native"/> </id> <property name="data" type="date"/> <property name="time" type="timestamp"/> <property name="level" type="string" length="10"/> <property name="message" type="text"/> </class>
发表评论
- 浏览: 4719 次
- 性别:

- 来自: 烟台

- 详细资料
搜索本博客
最新评论
-
Ext 验证
tubinee 写道支持!!! 一个提议: 考虑做个可以从server端验证的 ...
-- by techno_it -
Ext 验证
支持!!! 一个提议: 考虑做个可以从server端验证的vtype、
-- by tubinee -
使用传统IO包编写的Servle ...
drbeckham 写道 JDK6.0好像在Linux下支持EPOLL,性能应该 ...
-- by skydream -
使用传统IO包编写的Servle ...
用MINA吧,效率很好,也支持线程池,我自己测试过在普通配置(C2.6, 512 ...
-- by drbeckham -
使用传统IO包编写的Servle ...
如果并发不高的话,可以用我方法
-- by ssuupv






评论排行榜