Те же объекты в JPA - PullRequest
1 голос
/ 10 марта 2010

У меня есть такая модель сущности (с использованием EclipseLink и JPA 2.0):

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

    }

И

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

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

Я запрашиваю все объекты типа A и все объекты типа B, которые не имеют нулевой ссылки на поле B.a. Все объекты управляются. Например, давайте возьмем Collection<A> aObjects, Collection<B> bObjects.

Считайте, что aObjects.get(0).equals(bObjects.get(0).a) и a != null. Как я могу гарантировать, что aObjects.get(0) == bObjects.get(0).a?

У меня есть равные / идентичные объекты, но я бы предпочел тот же объект .

1 Ответ

1 голос
/ 10 марта 2010

JPA не работает таким образом. Экземпляры сущностей, возвращаемые из API JPA, представляют собой «гидратированные» контейнеры, представляющие постоянные данные. Сами java-объекты не являются специальными, они просто временные держатели данных.

С этой точки зрения идентичность объекта не важна, равенство объектов есть.

Если ваше приложение требует идентификации объекта таким способом, вы будете сражаться в проигрышной битве, поскольку JPA просто не предназначен для изгиба в этом направлении.

...