如何将Date类型传递给CreateSQLQuery

时间:2014-02-24 08:16:30

标签: java oracle hibernate

您好我在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?

1 个答案:

答案 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