Uniquing (a guarantee that only one copy of object with a given ID exists 
within the same ObjectContext) is Cayenne feature that works consistently 
across all releases since the early days. Please DON'T attempt to override 
equals and hashCode. The problem is likely elsewhere (likely your 2 objects 
coming from different contexts). And your implementation is not correct from 
the Cayenne POV (it doesn't take context into account) and will likely cause 
other problems.

Cheers,
Andrus

On Oct 13, 2011, at 1:53 PM, Bruno René Santos wrote:

> Hello all,
> 
> I've come accross a problem with the CayenneDataObjects. For some reason
> Cayenne created two different instances of the same database object. This
> made that the function equals and hashCode returned different values for the
> same data object (conceptually). I checked the CayenneDataObject and the
> hashCode function is not overriden anywhere, leading to this problem. As I
> already have extended the CayenneDataObject I only had to override the
> following functions:
> 
> @Override
> public boolean equals(Object obj) {
> if (obj instanceof HolosDataObject)
> return getObjectId().equals(((HolosDataObject) obj).getObjectId());
> return false;
> }
> 
> @Override
> public int hashCode() {
> return getObjectId().hashCode();
> }
> 
> Which fixed the problem. I am using cayenne 3.0.1. Shouldn't these
> functions, or some sort of version of them, be present in
> CayenneDataObject/PersistentDataObject?
> 
> Regards
> Bruno Santos
> 
> -- 
> Bruno René Santos | [email protected] | Gestor de Projectos | Analista |
> Programador | Investigador
> 
> Holos - Soluções Avançadas em Tecnologias de Informação S.A.
> Parque de Ciência e Tecnologia de Almada/Setúbal . Edifício Madan Parque
> Rua dos Inventores . Quinta da Torre . 2825 - 182 Caparica . Portugal
> Phone: +351 210 438 686 . Fax: +351 210 438 687 . Web: www.holos.pt
> 
> This email and any files transmitted with it are confidential and intended
> solely for the use of the individual or entity to whom they are addressed.
> If you are not the intended recipient or the person responsible for
> delivering the email to the intended recipient, be advised that you have
> received this email in error and that any use, dissemination, forwarding,
> printing, or copying of this email is strictly prohibited. If you have
> received this email in error please notify Bruno René Santos by telephone on
> +351 210 438 686

Reply via email to