small but interesting observation
in my experience, comparing BigDecimal using ".equals()" does not correctly compare numbers. when comparing "1000" and "1000.00" both BigDecimal data types, java considers these 2 values to be different. I have found that using the "compareTo()" method to yield better results. you may save a value in json body as "1000", but when you retrieve the values again, it is saved as "1000.00" then when you for instance want to update an entity, if you use .equals(), java will consider these 2 values to be different. this is my code snippet for instance. if (updateRequest.price() != null && updateRequest.price().compareTo(p.getPrice()) != 0 ){ p.setPrice(updateRequest.price()); changes = true; }