Es ist ein Ergebnis der Initialisierung von BigDecimal von double :
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Also, wenn BigDecimal so initialisiert in der Datenbank gespeichert wird, erzeugt es einen ungenauen Wert, der später korrekt geladen wird.
Wenn BigDecimal per String initialisiert wird oder der Wert direkt in Java gesetzt wird funktioniert alles einwandfrei.