我试图通过对oracle数据库使用以下SQL查询来一小时创建/修改行
select * from filecontent where row_mod_dt< = sysdate-1/24 order by row_mod_dt desc;
我试图通过使用以下hibernate命名查询
在我们的java应用程序中实现相同的功能@NamedQuery(name =“FileContent.findsent”,query =“select file from filecontent c where c.rowmoddt< = current_date - 1/24”)
但它没有给出预期的数据。
请帮助我。
谢谢,
答案 0 :(得分:0)
您必须使用标识变量c
来引用实体属性...以及from而不是表中的实体名称:
query="select c from YourEntityName c where c.rowmoddt <= current_date - 1/24 orderby c.rowmoddt desc"
答案 1 :(得分:0)
按照帖子
中的建议修正了此问题Performing Date/Time Math In HQL?
将查询更改为
@NamedQuery(name="FileContent.findsent",query="select id from filecontent c where c.rowmoddt <= :requiredTime")
在设置参数时,java代码如下所述。
Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(),
ZoneId.systemDefault()).minusHours(1);
Date out = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
query.setParameter("requiredTimeStamp",out, TemporalType.TIMESTAMP);
它可能会帮助别人。谢谢,