miren lo que pasa es que ando tratando de modificar una consulta la cual esta realizada para postgres (pruebas) y oracle(produccion) para cada lenguaje existe una consulta la razon es una funcion de oracle(instr) que en postgres(position) es diferente lo que quiero hacer es dejar una sola consulta para los dos lenguajes entiendo que con HQL podria hacer eso alguien sabe como lo podria hacer:
Dejo las consultas para que la miren:
Código SQL:
Ver original
--obtenerItemsCuotasNCOracle SELECT credit_reason, credit_entry_type, amount, ( SELECT invoice FROM tickets t WHERE invoice =:fac AND bussinesdate =:fecha AND t.ticket_date <=:hora ), substr(credit_invoice,POSITION('-' IN credit_invoice)+1), business_unit, credit_invoice FROM ticketitems WHERE ticket_key =:tique AND credit_reason = 'INTER' AND credit_invoice =:credit
Código SQL:
el error es el siguiente:Ver original
--obtenerItemsCuotasNCPostgres SELECT credit_reason, credit_entry_type, amount, ( SELECT invoice FROM tickets t WHERE invoice =:fac AND bussinesdate =:fecha AND t.ticket_date <=:hora ), substr(credit_invoice,POSITION('-' IN credit_invoice)+1), business_unit, credit_invoice FROM ticketitems WHERE ticket_key =:tique AND credit_reason = 'INTER' AND credit_invoice =:credit
Código Java:
Ver original
org.hibernate.exception.SQLGrammarException: could not execute query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2223) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) at integracion.alkosto.dao.CarteraDAO.obtenerItemsCuotasNC(CarteraDAO.java:184) at integracion.alkosto.exportacion.ExportadorCartera.cargarRegistrosPagoInteresMora(ExportadorCartera.java:841) at integracion.alkosto.exportacion.ExportadorCartera.cargarRegistrosPagoCuotas(ExportadorCartera.java:794) at integracion.alkosto.exportacion.ExportadorCartera.cargarRegistros(ExportadorCartera.java:373) at integracion.Invocador.carteraRegistro(Invocador.java:256) at integracion.Invocador.invocarInterfaz(Invocador.java:93) at integracion.Main.main(Main.java:24) Caused by: org.postgresql.util.PSQLException: ERROR: no existe la función instr() at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.doList(Loader.java:2220) ... 14 more