É o resultado da inicialização do
BigDecimal de double :System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Então, quando
BigDecimal inicializado desta forma é salvo no banco de dados, produz um valor impreciso, que é carregado corretamente posteriormente. Se
BigDecimal é inicializado por string ou se o valor for definido diretamente em Java tudo funciona bem.