Pregunta

Tengo modelo de entidad como esta (usando EclipseLink y JPA 2.0):

@Entity
    class A {
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      Long id;
      //equals, hashCode autogenerated by nb.

    }

Y:

@Entity
        class B {
             @Id
              @GeneratedValue(strategy = GenerationType.AUTO)
              Long id;

             @ManyToOne
             A a;
              //equals, hashCode autogenerated by nb.
        }

Yo consulto todos los objetos de tipo A, y todos los objetos de tipo B, que tienen de referencia no nula en el campo B.A.. Todos los objetos se manejan. Por ejemplo, vamos a echar Collection<A> aObjects, Collection<B> bObjects.

Tenga en cuenta que aObjects.get(0).equals(bObjects.get(0).a) y a != null. ¿Cómo puedo asegurar que aObjects.get(0) == bObjects.get(0).a?

tengo igual / idéntica objetos, pero preferiría prefieren el mismo objeto .

¿Fue útil?

Solución

APP no funciona de esa manera. Las instancias de la entidad que obtiene de vuelta de la API JPA son contenedores "hidratados" que representan los datos persistentes. los objetos Java en sí no son especiales, son titulares de los datos solo transitorios.

Desde esa perspectiva, la identidad del objeto no es importante, la igualdad es objeto.

Si su aplicación requiere la identidad del objeto de esta manera, usted va a estar luchando una batalla perdida, ya que la APP no está diseñado para doblarse en esa dirección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top