用Hibernate映射mysql问题(Timestamp)

问题描述

我知道这个是个常见问题,我已经看了论坛帖子和查阅相关资料,始终没找到好的解决方法,如果有空的帮解答下吧。SessionInfo.hbm.xml<hibernate-mapping package="domaininvestment.model"><class name="SessionInfo" table="SessionInfo"><id name="id"><generator class="native" /></id><property name="email" type="string" length="500" not-null="true" /><property name="sessionID" type="string" length="200" /><property name="clientIP" type="string" length="200" not-null="true" /><property name="creationTime" type="timestamp" not-null="true" /></class></hibernate-mapping>SessionInfoDao.javapublic boolean sessionInfoExists(SessionInfo info) throws RuntimeException {if (info == null) {return false;}Session sess = DaoBase.currentSession();try {String infoEmail = info.getEmail();String infoClientIP = info.getClientIP();Date infoCreationTime = info.getCreationTime();if (infoEmail == null || infoClientIP == null || infoCreationTime == null) {return false;}int diff = Util.diffDays(new Date(), infoCreationTime);if (diff < 0 || diff > SessionInfo.COOKIE_MAX_DAYS) {return false;}Query q = sess.createQuery("from SessionInfo where email = :email and clientIP = :clientIP and creationTime =:creationTime").setString("email", infoEmail).setString("clientIP", infoClientIP).setStrng("creationTime", infoCreationTime);Iterator itr = q.iterate();if (itr.hasNext()) {return true;} else {return false;}} finally {DaoBase.closeSession();}SessionInfoDaoTest.java@Testpublic void testSessionInfoExists() {SessionInfo info = null;assertFalse(dao.sessionInfoExists(info));info = new SessionInfo();assertFalse(dao.sessionInfoExists(info));info.setEmail("test@dc.com");assertFalse(dao.sessionInfoExists(info));info.setSessionID("123456");assertFalse(dao.sessionInfoExists(info));info.setClientIP("192.168.1.1");assertFalse(dao.sessionInfoExists(info));info.setCreationTime(new Date());assertFalse(dao.sessionInfoExists(info));info = new SessionInfo();info.setEmail("test@dc.com");info.setClientIP("192.168.1.1");info.setCreationTime(new Date());Session sess = reopenSession();sess.save(info);sess.flush();closeSession();assertTrue(dao.sessionInfoExists(info));}这里主要是timeStamp的问题,如果我把hql里面的creationTime去掉,即:"from SessionInfo where email = :email and clientIP = :clientIP " 我的测试就没问题,我把它加上后即使转成sqlDate也没用,不知道问题出在哪里? 问题补充:cheng888qi 写道

解决方案

引用<property name="creationTime" type="timestamp" not-null="true" /> 这里映射的是timestamp类型,引用 .setString("creationTime", infoCreationTime); 肯定不正确,你用下.setTimestamp("creationTime", infoCreationTime);

时间: 2024-09-25 20:13:39

用Hibernate映射mysql问题(Timestamp)的相关文章

mysql生成hibernate映射文件外键不能生成

问题描述 RT我在项目中用powerdesigner建的mysql数据库,主外键在数据库中也有,但是在生成hibernate映射文件时外键不能生成关系(一对多.多对多)什么原因啊 解决方案 解决方案二:那就手动加上呗..我一般都是用myEclipse的逆向工程生成hbm文件解决方案三:关键是我这是生成不了手工配置添麻烦了解决方案四:没道理呀,我配出来的都是有的.怪了...

mysql 数据库-HIbernate映射查询出错,

问题描述 HIbernate映射查询出错, UserIm表继承User表,使用的是@Inheritance(strategy = InheritanceType.JOINED)策略,其中User对象中有Accout对象,User和Accout对象之间是有关联表 ORG_ACCOUNT_USER_CLIENT的,但是这个关联表里还有其他字段有外键关联,字段名为 CLIENT_ID,不知道hibernate是怎么弄的,查询的时候把这个 CLIENT_ID 也查询了,我没设置让他查询 CLIENT_I

java-mysql year字段用hibernate映射插数据

问题描述 mysql year字段用hibernate映射插数据 year 在java中对应java.sql.Date 我如何通过date把 1990 这个数据插入到year中,不要月和年 解决方案 java.sql.Date的启示年份是1900,使用年份的时候需要减去1900. 解决方案二: String dt = new String(new SimpleDateFormat(""yyyy"").format(date));

hibernate-关于Hibernate映射子类的问题

问题描述 关于Hibernate映射子类的问题 报错如下 Hibernate: select muser0_.id as id2_, muser0_.password as password2_, muser0_.email as email2_, muser0_.username as username2_, muser0_.type as type2_ from mysql.muser muser0_ where muser0_.id=? org.hibernate.WrongClassEx

【SSH系列】hibernate映射 -- 一对一双向关联映射

       开篇前言       上篇博文[SSH进阶之路]hibernate映射--一对一单向关联映射,小编介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.为什么呢,因为对象模型具有方向性,在前面的博文Hibernate基本映射中,小编介绍了单向和双向,所谓的单向就是一段只能加载另一个端,不能反过来:双向就是两端都可以加载另一端,可以这样来理解,单向就是一厢情愿,双向就是两情相悦.ok,那么问题来了,如果我

【SSH系列】Hibernate映射 -- 一对多关联映射

     映射原理       一对多关联映射和多对一关联映射的映射原理是一样一样的,所以说嘛,知识都是相通的,一通百通,为什么说一对多关联映射和多对一关联映射是一样的呢?因为她们都是在多的一端加入一个外键,指向一的一段,关联关系都是在多的一端进行维护,只是我们在写映射的时候发生了变化.       一对多和多对一的映射原理是一样的,但是她们之间也存在着小小的区别,毕竟世界上没有两片完全相同的叶子,她们之间的区别就是维护的关系不同,我们先来看多对一,多端维护一端的关系,在加载多端的时候,可以将一

MySQL中timestamp字段的一些规则

有同学说timestamp字段的规则比较"诡异".手册里面说的比较复杂,这里简单说明一下MySQL中 timestamp字段的一些规则.   分为两部分   定义规则:   1.  timestamp字段有三个属性: a)           是否允许NULL.默认为not null. b)           默认值.可以设定为default CURRENT_TIMESTAMP 或default 某个常量.若定义时缺省,对于第一个出现的timestamp字段,默认为CURRENT_T

Hibernate映射集合属性、映射组件属性和关联映射都是几张数据表之间的映射的问题,它们在应用上有什么区别?分别应用在什么场合?它们的效率的比较如何?

问题描述 Hibernate映射集合属性.映射组件属性和关联映射都是几张数据表之间的映射的问题,它们在应用上有什么区别?分别应用在什么场合?它们的效率的比较如何?我刚学hibernate,希望诸位前辈赐教!!! 解决方案 解决方案二:请加我QQ,我有视屏教程讲的很细解决方案三:50307924

hibernate+spring+mysql 问题,麻烦高手解决,搞了几天都没有搞出来

问题描述 2011-03-0900:22:18,343ERROR[org.springframework.web.context.ContextLoader]-<Contextinitializationfailed>org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'org.springframework.transaction.interceptor.TransactionAtt