0

アプリケーションで JPA ベンダーとして OpenJPA を使用しています。

問題は理論的または概念的なものです。

エンティティ マネージャに、キャッシュからではなく DB からエンティティをロードするように指示する方法はありますか?

問題のあるシナリオ:

EM1.persist(Entity1)
EM2.merge(Entity1)
EM1.find(Entity1)  <--- Entity1 is the cached version rather than the merged one..

それを行うエレガントな方法はありますか?私は本当に電話したくありませんem.refresh(entity)

4

1 に答える 1

1

エンティティが利用可能な場合、 em.refresh(entity) はエンティティを強制的に再ロードする最もクリーンな方法です。

利用可能なエンティティがない場合は、次のように呼び出すことができます。

EM1.clear(); // all entities are detached - might not be desired.  
EM1.find(Entity1);

JPA 2.0 では、エンティティを明示的にデタッチすることもできます (ただし、これは em.refresh() よりも優れているとは思いません)。

EM1.detach(Entity); 
EM1.find(Entity1);
于 2010-04-07T01:27:26.820 に答える