public boolean equals(Object x)
Compares this BigDecimal with the specified Object for equality. Unlike compareTo, this method considers two BigDecimals equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by this method).
1. BigDecimal equality is not handled properly. Even if the objects are initialized from strings or database fields with proper resolution (ie not from floats!), EOKeyValueQualifier is not able to determine proper equality. The way I made this work was to subclass EOKeyValueQualifier, override evaluateWithObject(), check if the objects are BigDecimals, and do a compareTo() instead of equals().

From the Java API:

Overrides:
equals in class Object

Parameters:
x - Object to which this BigDecimal is to be compared.

Returns:
true if and only if the specified Object is a BigDecimal whose value and scale are equal to this BigDecimal's.

See Also:
compareTo(java.math.BigDecimal)

Use compareTo() for checking equality on BigDecimal not equals....

2. In Objective-C, I never had a problem with object equality for relationships. If the 2 objects have the same Global ID, but are from 2 different contexts, EOKeyValueQualifier now no longer sees them as equal as it should. The way I've fixed this is to check for EOs in the comparison, and compare their global IDs instead.

I've seen this issues as well.  Your solution is probably best.

On Dec 21, 2005, at 5:09 PM, Ken Anderson wrote:

List Colleagues,

I've had a couple of experiences lately with in-memory qualification and EOKeyValueQualifier that I need to bounce off the list to make sure I'm not losing it. I've had 2 recent issues:

1. BigDecimal equality is not handled properly. Even if the objects are initialized from strings or database fields with proper resolution (ie not from floats!), EOKeyValueQualifier is not able to determine proper equality. The way I made this work was to subclass EOKeyValueQualifier, override evaluateWithObject(), check if the objects are BigDecimals, and do a compareTo() instead of equals().

2. In Objective-C, I never had a problem with object equality for relationships. If the 2 objects have the same Global ID, but are from 2 different contexts, EOKeyValueQualifier now no longer sees them as equal as it should. The way I've fixed this is to check for EOs in the comparison, and compare their global IDs instead.

It seems from the documentation that you can override comparison support, but I can't seem to find out how. Any pointers? Anyone have similar experiences?

Thanks,
Ken

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/robertwalker1% 40mac.com

This email sent to [EMAIL PROTECTED]

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to