JPA中的相同对象

时间:2010-03-09 21:27:25

标签: java jpa entity eclipselink

我有这样的实体模型(使用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 个答案:

答案 0 :(得分:1)

JPA无法正常工作。您从JPA API返回的实体实例是表示持久数据的“水合”容器。 java对象本身并不特殊,它们只是瞬态数据持有者。

从这个角度来看,对象身份并不重要,对象平等就是。

如果您的应用程序需要以这种方式识别对象,那么您将打败一场失败的战斗,因为JPA并不是为了向这个方向弯曲。