How do you set the values? object.setXyz(new BigDecimal(..)) ?
On Jun 18, 2014, at 3:56 PM, Mark Stobbe <[email protected]> wrote: > Thank you for the link to the code that does the check. > > I figured out that if two BigDecimal do not have the same scale, they are > considered different. I guess that makes sense. > > When I retrieve BigDecimals from Cayenne it will have the correct scale > set, but it does not set the scale of the new value before it compares. > Is this something that Cayenne can solve? > > Mark > > > > On Wed, Jun 18, 2014 at 8:29 AM, Andrus Adamchik <[email protected]> > wrote: > >> Actually even if an object is marked as dirty after ‘setXyz’, later on >> during commit Cayenne should do a proper comparison and avoid “phantom” >> commits. The relevant code is in >> org.apache.cayenne.access.ObjectDiff.isNoop: >> >> >> https://github.com/apache/cayenne/blob/master/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectDiff.java >> >> Andrus >> >> >> On Jun 18, 2014, at 12:03 AM, Mark Stobbe <[email protected]> wrote: >> >>> Hi, >>> >>> I have a decimal column which is translated to a BigDecimal. When the >> value >>> is equal to 0 and I set the value equal to 0 again, it will actually >>> perform a SQL UPDATE. The two objects are "==", but they are "equals". >>> In the source I found in de PersistentObjectHolder.setValue the >> following: >>> >>> Object oldValue = setValueDirectly(value); >>> if (oldValue != value && relationshipOwner.getObjectContext() != null) { >>> relationshipOwner.getObjectContext().propertyChanged(relationshipOwner, >>> relationshipName, oldValue, value); >>> .. >>> } >>> >>> Is this piece of code used for non-primitive properties? >>> >>> Mark >>> >>> PS: I am using 3.2M1 >> >>
