Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2015, 13:44
felopez0
 
Fecha de Ingreso: agosto-2011
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 0
postgres,oracle,hibernate,hql

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
  1. --obtenerItemsCuotasNCOracle
  2.     SELECT
  3.     credit_reason,
  4.     credit_entry_type,
  5.     amount,
  6.     (
  7.         SELECT
  8.             invoice
  9.         FROM
  10.             tickets t
  11.         WHERE
  12.             invoice =:fac
  13.             AND bussinesdate =:fecha
  14.             AND t.ticket_date <=:hora
  15.     ),
  16.     substr(credit_invoice,POSITION('-' IN credit_invoice)+1),
  17.     business_unit,
  18.     credit_invoice
  19. FROM
  20.     ticketitems
  21. WHERE
  22.     ticket_key =:tique
  23.     AND credit_reason = 'INTER'
  24.     AND credit_invoice =:credit
Código SQL:
Ver original
  1. --obtenerItemsCuotasNCPostgres
  2.     SELECT
  3.     credit_reason,
  4.     credit_entry_type,
  5.     amount,
  6.     (
  7.         SELECT
  8.             invoice
  9.         FROM
  10.             tickets t
  11.         WHERE
  12.             invoice =:fac
  13.             AND bussinesdate =:fecha
  14.             AND t.ticket_date <=:hora
  15.     ),
  16.     substr(credit_invoice,POSITION('-' IN credit_invoice)+1),
  17.     business_unit,
  18.     credit_invoice
  19. FROM
  20.     ticketitems
  21. WHERE
  22.     ticket_key =:tique
  23.     AND credit_reason = 'INTER'
  24.     AND credit_invoice =:credit
el error es el siguiente:
Código Java:
Ver original
  1. org.hibernate.exception.SQLGrammarException: could not execute query
  2.     at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
  3.     at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
  4.     at org.hibernate.loader.Loader.doList(Loader.java:2223)
  5.     at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
  6.     at org.hibernate.loader.Loader.list(Loader.java:2099)
  7.     at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
  8.     at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
  9.     at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
  10.     at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
  11.     at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
  12.     at integracion.alkosto.dao.CarteraDAO.obtenerItemsCuotasNC(CarteraDAO.java:184)
  13.     at integracion.alkosto.exportacion.ExportadorCartera.cargarRegistrosPagoInteresMora(ExportadorCartera.java:841)
  14.     at integracion.alkosto.exportacion.ExportadorCartera.cargarRegistrosPagoCuotas(ExportadorCartera.java:794)
  15.     at integracion.alkosto.exportacion.ExportadorCartera.cargarRegistros(ExportadorCartera.java:373)
  16.     at integracion.Invocador.carteraRegistro(Invocador.java:256)
  17.     at integracion.Invocador.invocarInterfaz(Invocador.java:93)
  18.     at integracion.Main.main(Main.java:24)
  19. Caused by: org.postgresql.util.PSQLException: ERROR: no existe la función instr()
  20.     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548)
  21.     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316)
  22.     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
  23.     at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
  24.     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
  25.     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255)
  26.     at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
  27.     at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
  28.     at org.hibernate.loader.Loader.doQuery(Loader.java:674)
  29.     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
  30.     at org.hibernate.loader.Loader.doList(Loader.java:2220)
  31.     ... 14 more