Pessoal, no método abaixo, estou tentando fazer uma consulta, só que está ocorrendo um erro no momento em que seto o parametro “this.query.setParameter(“tempo”, “interval’2 minutes’”);”, pois preciso de alguma forma setar o valor dos minutos. O erro que está ocorrendo é:
262498 [DispatchThread: 2] DEBUG org.hibernate.util.JDBCExceptionReporter - could not execute query [select r.co_registro from abm.sbmtb007_registro as r where ts_ocorrencia >= LOCALTIMESTAMP(1) - ? and r.no_servico = 'consultar' and r.co_servico = ? and r.co_terminal = ? order by r.co_registro desc]
org.postgresql.util.PSQLException: ERROR: operator does not exist: timestamp without time zone - character varying
public Registro analisarRegistros(Registro registro,
Configuracao configuracao) {
String jpql = "select r.co_registro from abm.sbmtb007_registro as r "
+ "where ts_ocorrencia >= LOCALTIMESTAMP(1) - :tempo "
+ "and r.no_servico = 'consultar' "
+ "and r.co_servico = :numero "
+ "and r.co_terminal = :terminal "
+ "order by r.co_registro desc";
String tempo = String.valueOf(configuracao.getTimeout());
String teste = "'"+tempo+" minutes'";
try {
this.query = this.entityManager.createNativeQuery(jpql);
this.query.setParameter("numero", registro.getNIS());
this.query.setParameter("terminal", registro.getTerminal());
this.query.setParameter("tempo", "interval'2 minutes'");
List <Integer> id = this.query.getResultList();
if (!id.isEmpty()) {
return this.entityManager.find(Registro.class, id);
}else{
return null;
}
} catch (Exception e) {
this.logger.warning("Ocorreu um erro na analise dos registros"+e.getMessage());
e.printStackTrace();
}
return null;
}
Alguém pode me dizer como resolvo isso?