At the moment, our project using JPA to call a stored procedure like this:
StoredProcedureQuery query = em.createStoredProcedureQuery("Package.Procedure") .registerStoredProcedureParameter(1, Long.class, ParameterMode.IN) .registerStoredProcedureParameter(2, String.class, ParameterMode.IN) .registerStoredProcedureParameter(3, String.class, ParameterMode.IN) .registerStoredProcedureParameter(4, Long.class, ParameterMode.IN) .registerStoredProcedureParameter(5, String.class, ParameterMode.IN) .registerStoredProcedureParameter(6, String.class, ParameterMode.IN) .registerStoredProcedureParameter(7, String.class, ParameterMode.IN) .registerStoredProcedureParameter(8, String.class, ParameterMode.IN) .registerStoredProcedureParameter(9, Long.class, ParameterMode.IN) .registerStoredProcedureParameter(10, Class.class, ParameterMode.REF_CURSOR) .setParameter(1, null) .setParameter(2, null) .setParameter(3, null) .setParameter(4, null) .setParameter(5, null) .setParameter(6, null) .setParameter(7, null) .setParameter(8, null) .setParameter(9, null);
List<Object[]> result = query.getResultList();
The output is a table which have 2 timestamp column.
When i try to run this code, we got the exception :
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: -101
As i search around, -101 mean that the result contain timestamps and fail to convert it i think. We try to remove those 2 timestamps column from procedure and everything work.
I try to search for a solution and most answer tell me to cast the value before return or to "addScalar". But the one who create these procedure doesn't want to update it and ask us to find a solution for it.
So can anywant tell me what should i do in this case?