Detta är spekulationer baserade på liknande beteende i Postgres-drivrutinen postgresql-9.4-1204-jdbc42.jar
.
För en ospecificerad NUMERIC
databasen verkar inte lagra någon speciell information om kolumnens precision och skala. Detta gör det möjligt för databasen att internt lagra värdet på något sätt som det verkar lämpligt. Från https://www.postgresql.org/docs/current/ static/datatype-numeric.html
Sedan föraren vet inte vilken implementeringsspecifika maximum för servern är att den inte kan returnera de faktiska värdena. Den returnerar 0 för att indikera att den inte känner till de faktiska värdena och inte vill göra några välgrundade gissningar.
Det verkar som att situationen är samma med Oracle . Den maximala precisionen kan vara högre, men portabilitet garanteras endast upp till 38 siffror.
När det gäller att lösa problemet i frågan, som StanislavL indikerade kan du tvinga värdet till en specifik precision/skala genom att kasta.