mysql diffdays_用Hibernate映射mysql问题(Timestamp)

我知道这个是个常见问题,我已经看了论坛帖子和查阅相关资料,始终没找到好的解决方法,如果有空的帮解答下吧。

SessionInfo.hbm.xml

SessionInfoDao.java

public 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

@Test

public 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 写道

引用

这里映射的是timestamp类型,

引用

.setString("creationTime", infoCreationTime);

肯定不正确,你用下

.setTimestamp("creationTime", infoCreationTime);

谢谢好像是这个问题,String是我打错了,我之前用的是setDate(),现在测试没问题了。唉,太悲剧了,这个小问题弄了那么久。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值