Това е спекулация, базирана на подобно поведение в драйвера на Postgres postgresql-9.4-1204-jdbc42.jar
.
За неопределен NUMERIC
базата данни изглежда не съхранява никаква конкретна информация за точността и мащаба на колоната. Това позволява на базата данни да съхранява вътрешно стойността по какъвто начин изглежда подходящ. От https://www.postgresql.org/docs/current/ static/datatype-numeric.html
От драйвера не знае какъв е конкретният максимум на изпълнението на сървъра е, че не може да върне действителните стойности. Връща 0, за да покаже, че не знае действителните стойности и не иска да прави обосновани предположения.
Изглежда, че ситуацията е същата с Oracle . Максималната прецизност може да е по-висока, но преносимостта се гарантира само до 38 цифри.
Що се отнася до решаването на проблема във въпроса, както StanislavL посочи, можете да принудите стойността да достигне конкретна точност/мащаб чрез кастинг.