Java 使用Hibernate更新mysql日期列?

Java 使用Hibernate更新mysql日期列?,java,hibernate,Java,Hibernate,当使用新的Date()函数更新datetime字段时,它有日期部分,但它的时间部分将是(00.00.00),插入时它没有任何问题2013-08-02 12:57:09,但在更新时它的工作方式类似于2013-08-02 00:00:00 session.createQuery( "update DeviceDetails u set u.statusUpDate=:statusUpDate where u.id=:dID") .setDate("statusUpDate", new Date())

当使用新的
Date()
函数更新datetime字段时,它有日期部分,但它的时间部分将是
(00.00.00
),插入时它没有任何问题
2013-08-02 12:57:09
,但在更新时它的工作方式类似于
2013-08-02 00:00:00

session.createQuery(
"update DeviceDetails u set u.statusUpDate=:statusUpDate where u.id=:dID")
.setDate("statusUpDate", new Date())
.setInteger("dID",dID).executeUpdate();

session.getTransaction().commit()
使用
setTimestamp()
,而不要使用
setDate()

或者根本不使用查询:使用
Session.get()
获取实体,并修改其字段。

使用
setTimestamp()
,而不是
setDate()


或者根本不使用查询:使用
Session.get()
获取实体,并修改其字段。

看到这一点了吗?看到这一点了吗?你为什么要重复你在这篇评论中的问题中已有的代码?我很想知道setDate()和setTimestamp()之间的区别。setDate()使用java.sql.Date(没有时间部分),而setTimestamp()使用java.sql.Timestamp(具有时间部分)。阅读这两个类的javadoc以了解确切的区别。我使用hibernate查询来保存日期和时间……它在保存会话对象checkAdd.setcheck(newDate())方面非常有效;session.save(选中Add);session.getTransaction().commit();一旦使用“更新”,则使用日期部分而非时间部分。。。实际上,问题是通过使用setTimestamp()函数解决的。提到的问题是因为java库文件导致的吗?问题是因为您使用了setDate(),这意味着:使用这个日期设置参数的值,而不使用时间值。为什么要重复此注释中问题中已有的代码?我很想知道setDate()、setTimestamp()之间的区别。setDate()使用java.sql.date(没有时间部分),而setTimestamp()使用使用java.sql.Timestamp(具有时间部分)。阅读这两个类的javadoc以了解确切的区别。我使用hibernate查询来保存日期和时间……它在保存会话对象checkAdd.setcheck(newDate())方面非常有效;session.save(选中Add);session.getTransaction().commit();一旦使用“更新”,则使用日期部分而非时间部分。。。实际上,问题是通过使用setTimestamp()函数解决的。提到的问题是因为java库文件出现的吗?问题是因为您使用了setDate(),这意味着:使用此日期设置参数值,而不使用时间值。