Comparing BigDecimals

Andrus Adamchik <[email protected]>
Newsgroups gmane.comp.java.cayenne.devel
Message-ID <[email protected]>
Hi folks,

Just ran into an obscure and minor but at the same time fundamental bug - Cayenne generated unneeded updates when the only change is BidDecimal value scale [1]. Essentially for BigDecimals we shouldn't be calling "a.equals(b)" but use "a.compareTo(b) == 0". I have a fix [2], but using "instanceof" inside a common performance-sensitive code feels dirty. I'd much rather a comparison strategy to be a part of the PropertyDescriptor object or something. So not applying the PR just yet.

Wanted to mention it here. Perhaps there are other data types that can't use "equals" for some reason. And perhaps there are other solutions to this problem too...

Andrus

[1] https://issues.apache.org/jira/browse/CAY-2660
[2] https://github.com/apache/cayenne/pull/426
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.