Error on calling StoredProcedure [message #1829908] |
Mon, 13 July 2020 17:48  |
Bruno Tavares Messages: 2 Registered: July 2020 |
Junior Member |
|
|
I got this error when I try to call a StoredProcedure on Postgresql.
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.6.payara-p1): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgCallableStatement.setBigDecimal(String,BigDecimal) is not yet implemented.
Error Code: 0
Call: {?= CALL pck_app_colheitas.set_estado_atendimento(?, ?, ?, ?, ?)}
bind => [6 parameters bound]
Query: ResultSetMappingQuery()
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:342)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:691)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:567)
at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2099)
at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:313)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:275)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:261)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.execute(DatasourceCallQueryMechanism.java:253)
at org.eclipse.persistence.queries.ResultSetMappingQuery.executeDatabaseQuery(ResultSetMappingQuery.java:318)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:911)
at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:810)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2983)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1898)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1880)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1845)
at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:262)
... 96 more
Caused by: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgCallableStatement.setBigDecimal(String,BigDecimal) is not yet implemented.
at org.postgresql.Driver.notImplemented(Driver.java:693)
at org.postgresql.jdbc.PgCallableStatement.setBigDecimal(PgCallableStatement.java:749)
at com.sun.gjc.spi.base.CallableStatementWrapper.setBigDecimal(CallableStatementWrapper.java:860)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.sun.gjc.spi.jdbc40.ProfiledConnectionWrapper40$1.invoke(ProfiledConnectionWrapper40.java:437)
at com.sun.proxy.$Proxy403.setBigDecimal(Unknown Source)
at org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.setParameterValueInDatabaseCall(DatabasePlatform.java:2692)
at org.eclipse.persistence.queries.StoredProcedureCall.prepareStatement(StoredProcedureCall.java:893)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:628)
... 110 more
It's working on eclipselink 2.7.4, but not working on 2.7.7.
Code to test is:
StoredProcedureQuery setEstadoAtendimento = em.createStoredProcedureQuery("pck_app_colheitas.set_estado_atendimento");
setEstadoAtendimento.registerStoredProcedureParameter("vNumepisodio", BigInteger.class, ParameterMode.IN);
setEstadoAtendimento.registerStoredProcedureParameter("vUser", String.class, ParameterMode.IN);
setEstadoAtendimento.registerStoredProcedureParameter("vIdSala", BigInteger.class, ParameterMode.IN);
setEstadoAtendimento.registerStoredProcedureParameter("vIdCentro", BigInteger.class, ParameterMode.IN);
setEstadoAtendimento.registerStoredProcedureParameter("vIdEstado", Integer.class, ParameterMode.IN);
setEstadoAtendimento.registerStoredProcedureParameter("vRetorno", Integer.class, ParameterMode.OUT);
setEstadoAtendimento.setParameter("vNumepisodio", idEpisodio);
setEstadoAtendimento.setParameter("vUser", username);
setEstadoAtendimento.setParameter("vIdSala", idSala);
setEstadoAtendimento.setParameter("vIdCentro", idCentro);
setEstadoAtendimento.setParameter("vIdEstado", estadoAtendimento.getId());
setEstadoAtendimento.execute();
Postgresql driver is:
postgresql-42.2.12.jar
|
|
|
Re: Error on calling StoredProcedure [message #1829950 is a reply to message #1829908] |
Tue, 14 July 2020 16:03   |
Chris Delahunt Messages: 1389 Registered: July 2009 |
Senior Member |
|
|
Looks like the driver used doesn't have support for named parameters. You will have to define them by their positions instead:
setEstadoAtendimento.registerStoredProcedureParameter(1, BigInteger.class, ParameterMode.IN);
...
setEstadoAtendimento.setParameter(1, idEpisodio);
..
I have no idea why this would have worked previously though.
Best Regards,
Chris
[Updated on: Tue, 14 July 2020 16:04] Report message to a moderator
|
|
|
|
Powered by
FUDForum. Page generated in 0.01526 seconds