1

標準の春/jpa/休止状態のセットアップがあります。それぞれ独自の EntityManager インスタンスが注入された 2 つの異なる DAO を使用する @Transactional を使用したサービス メソッド。

同じ Hibernate セッション (トランザクション) では同じオブジェクトである必要がありますが、クエリを実行すると、最終的に同じエンティティ (直接的および間接的に取得される) は異なるオブジェクトとして表されます。

私のDAOは異なる休止状態セッションを使用していますか、それとも...?

4

1 に答える 1

1

休止状態セッションが同じであっても、オブジェクト ID は異なる場合があります。entityManager.find メソッドを使用して識別子で読み取る場合、返されるオブジェクトは同じセッションで常に同一です (第 1 レベルのキャッシュ)。ただし、JPQL または基準クエリを使用すると、(同じデータで) 異なるインスタンスが取得される可能性があります。

于 2013-10-26T00:09:44.727 に答える