Java 如何将日期类型传递给CreateSQLQuery
您好,我正在使用Java中的hibernate。我Java 如何将日期类型传递给CreateSQLQuery,java,oracle,hibernate,Java,Oracle,Hibernate,您好,我正在使用Java中的hibernate。我在排序表中保存一行,然后我想更新它。所以我使用这个代码: s.beginTransaction(); s.save(ordered[i]); s.getTransaction().commit(); s.beginTransaction(); SOrder so = (SOrder) s.createSQLQuery("select * from SOrder where Created_Time=?") .add
在排序表中保存一行,然后我想更新它。所以我使用这个代码:
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
,但创建的时间正是以前保存的时间。
是否有特殊方法将日期传递给CreateSQLQuery?如果使用=
运算符,参数日期必须与日期表单DB完全相同。我认为,在JPQL
或hql
中为日期参数使用=
运算符就像是一种风险。
我建议使用>
或
Bdate=>Adate在Bdate之前
其中AdateAdate在Bdate之后
其中Cdate在Adate和Bdate之间=>Cdate在Adate和Bdate之间
是的,我希望它们完全相同,我保存了创建时间本身,它没有理由返回null。谢谢你的回答,但是我改变了解决方案,我不再需要它了。
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