带有setTimestamp的HibernateException但与setParameter一起使用

时间:2011-11-18 14:03:00

标签: java hibernate

这是代码的最小版本,花了我很多时间来弄清楚它为什么不起作用:

Query q = session.createQuery(queryString);
q.setTimestamp(0, new java.util.Date());

错误是:

Unset positional parameter at position: 0

当我用setTimestamp()替换setParameter()时:

Query q = session.createQuery(queryString);
q.setParameter(0, new java.util.Date());

它有效,但我无法弄清楚原因。我正在使用hibernate 3.2.1。

编辑:有其他建议的帖子去哪儿了?就是这样!!

2 个答案:

答案 0 :(得分:1)

以前有一个答案建议使用java.sql.Timestamp代替java.util.Date。通过这一点修改,setTimestamp方法可以正常工作。

答案 1 :(得分:0)

在映射中,您可能需要将以下注释添加到保存时间戳

的变量中

@Temporal(TemporalType.TIMESTAMP)

这可能是setParameter工作的原因(它只是一个对象)而setTimestamp不是。