2010-01-12 69 views
0

我在我的應用程序中使用OpenJPA作爲JPA供應商。持久實體的重新加載

問題是理論或概念:

有沒有辦法告訴實體管理器從數據庫中,而不是從它的緩存加載一個實體?

有問題的情景:

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 2010-01-12 13:21:17

回答

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);