您好我在Java中使用hibernate。我在SOrder表中save
一行,然后我想更新它。所以我使用这段代码:
s.beginTransaction();
s.save(ordered[i]);
s.getTransaction().commit();
s.beginTransaction();
SOrder so = (SOrder) s.createSQLQuery("select * from SOrder where Created_Time=?")
.addEntity(SOrder.class)
.setParameter(0, ordered[i].Created_Time)
.uniqueResult();
so.Pay_Status="Payed";
so.Response_Code="00";
s.update(so);
s.getTransaction().commit();
save
方法正常工作,但当Select *
null返回so
时,但Created_Time只是之前保存的那个。
是否有任何特殊的方法将Date
Type传递给CreateSQLQuery?
答案 0 :(得分:0)
如果您使用=
运算符,则parameter date
必须与DB的日期格式完全相同。我认为,在=
或JPQL
中使用hql
运算符作为日期参数的风险就像。
我建议您使用>
或<
或BETWEEN
运算符。
WHERE Adate > Bdate => Adate is before Bdate
WHERE Adate < Bdate => Adate is after Bdate
WHERE Cdate BETWEEN Adate AND Bdate => Cdate is between Adate and Bdate