我有一個狀態的集合,我想緩存這個應用程序的生命週期,最好是在第一次調用它之後。我使用EclipseLink作爲我的持久性提供者。在我的EJB3實體我有以下代碼:如何在EclipseLink中配置查詢緩存
@Cache
@NamedQueries({
@NamedQuery(
name = "State.findAll",
query = "SELECT s FROM State s",
hints = {
@QueryHint(name=QueryHints.CACHE_USAGE, value=CacheUsage.CheckCacheThenDatabase),
@QueryHint(name=QueryHints.READ_ONLY, value=HintValues.TRUE)
}
)
})
這似乎並不儘管做任何事情,如果我監控的SQL查詢將MySQL的一個選擇我的每個會話Bean使用此NamedQuery時候它仍然沒有。
什麼是正確的方式來配置此查詢,以便它只能從數據庫中讀取一次,最好跨所有會話?
編輯:這裏
Query query = em.createNamedQuery("State.findAll");
List<State> states = query.getResultList();
運氣好的搞清楚EclipseLink的會話/緩存配置。我永遠不會。 – cletus 2009-02-25 04:59:01