这是代码的最小版本,花了我很多时间来弄清楚它为什么不起作用:
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。
编辑:有其他建议的帖子去哪儿了?就是这样!!
答案 0 :(得分:1)
以前有一个答案建议使用java.sql.Timestamp
代替java.util.Date
。通过这一点修改,setTimestamp
方法可以正常工作。
答案 1 :(得分:0)
在映射中,您可能需要将以下注释添加到保存时间戳
的变量中 @Temporal(TemporalType.TIMESTAMP)
这可能是setParameter
工作的原因(它只是一个对象)而setTimestamp
不是。