質問

私はこのようなエンティティモデルを有する(の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.
        }

IはB.aフィールドにnull参照を持っていないタイプAのすべてのオブジェクト、およびタイプBのすべてのオブジェクトを、クエリ。すべてのオブジェクトが管理されています。例えば、Collection<A> aObjects, Collection<B> bObjectsを取ることができます。

そのaObjects.get(0).equals(bObjects.get(0).a)、およびa != nullを考えてみましょう。どのように私はそのaObjects.get(0) == bObjects.get(0).aを確保することができますか?

同じオブジェクトを私は等しく/同じのオブジェクトを持っているが、私はむしろを好む

役に立ちましたか?

解決

JPAはそのように動作しません。あなたが戻ってJPAのAPIから取得するエンティティインスタンスは、永続データを表す「水和」コンテナです。 Javaは、彼らは単に一時データ保有している、自身が特別ではないオブジェクトます。

そのような観点からは、オブジェクトIDは、オブジェクトの平等は、重要ではありません。

アプリケーションがこの方法でオブジェクトIDを必要とする場合はJPAはちょうどその方向に曲がるように設計されていないため、

、あなたは、負け戦いを戦うことになるだろう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top