Estoy tratando de obtener las filas creadas / modificadas una hora atrás utilizando la siguiente consulta SQL para la base de datos de Oracle

Seleccione * del contenido del archivo donde row_mod_dt <= sysdate-1/24 ordenar por row_mod_dt desc;

Estoy tratando de implementar lo mismo en nuestra aplicación java utilizando la siguiente consulta con nombre de hibernación

@NamedQuery (name = "FileContent.findsent", query = "seleccionar id de filecontent c donde c.rowmoddt <= current_date - 1/24")

Pero no está dando los datos esperados.

Por favor, ayúdame con esto.

Gracias

0
user3780032 21 feb. 2018 a las 06:24

2 respuestas

La mejor respuesta

Se corrigió esto como se sugiere en la publicación.

¿Realización de matemáticas de fecha / hora en HQL?

Cambió la consulta como @NamedQuery(name="FileContent.findsent",query="select id from filecontent c where c.rowmoddt <= :requiredTime")

Al configurar el parámetro, el código Java se menciona a continuación.

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);

Puede ayudar a otros. Gracias,

0
osama yaccoub 25 feb. 2018 a las 15:16

Debe usar la variable de identificación c para hacer referencia a los atributos de la entidad ... y el nombre de la entidad en la tabla de no: query="select c from YourEntityName c where c.rowmoddt <= current_date - 1/24 orderby c.rowmoddt desc"

0
osama yaccoub 21 feb. 2018 a las 11:28