Buenos días.
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:
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
el error es el siguiente:
Código Java:
Ver originalorg.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