2010-01-12 8 views
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)에 전화하고 싶지 않다.

+6

'em.refresh (entity) '의 문제점은 무엇입니까? 그것은 단지 한 줄의 코드 일 뿐이며, 다른 해결책은 그보다 더 간결하지 않을 것입니다. – skaffman

답변

1

엔티티를 사용할 수 있으면 em.refresh (엔티티)가 엔티티를 다시로드하도록하는 가장 깨끗한 방법입니다. (

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

JPA 2.0에서는 사용자가 명시 적으로 개체를 분리 할 수 ​​(하지만 난 em.refresh보다 더 나은 것으로이 표시되지 않는 : 당신이 사용할 수있는 실체가없는 경우

당신이 호출 할 수 있습니다)) :

EM1.detach(Entity); 
EM1.find(Entity1);