I was able to ‘solve’ it by adding an additional check in the sapodataconnector.utils.JsonSerializer
case "Decimal":
if (value == null) {
target.put(targetMemberName, "");
} else if (value instanceof BigDecimal && ((BigDecimal) value).compareTo(BigDecimal.ZERO) == 0) {
target.put(targetMemberName, "0");
} else {
target.put(targetMemberName, value.toString());
}
break;
This is however not the ideal way forward so it should be changed within the repo of the module
This issue has not yet been resolved and seems a quite significant bug to me. It is very poorly developed that 0 values are automatically converted to “0E-8” in the OData output.
Now we solve this in our application to have an after-commit event, with an if-then-else construction to convert 0 values into empty values.
Our application will have 500+ users and the OData connection we now use for reporting to transfer data to another Azure environment. The Azure transfer does not work with “0E-8” values in the database.
@Mendix development team: please try to fix this