コメントに既に説明されているように、あなたはNamedQueryを誤解しています。結果はキャッシュには格納されませんが、問合せSQLは格納されます。
それでも時々のEntityManagerは、いくつかのことをキャッシュし、私はあなたがそのためのソリューションが必要と思います....
あなたは、クエリオブジェクト(例えばEntityManager.createNamedQuery(「nameOfYourQuery」))と協力し、EclipseLinkをしている場合次の操作を行うことができます
Query query = EntityManager.createNamedQuery("nameOfYourQuery");
query.setHint(QueryHints.REFRESH, HintValues.TRUE);
query.getResultList();
ます。また、セットアップクエリは、このようNamedQueryに直接ヒントすることができます
@NamedQuery(name = "something", query = "SELECT n FROM something",
[email protected](name=QueryHints.REFRESH, value=HintValues.TRUE))
別の方法wiは第クエリヒントは、この1のようになります。
可能クエリヒントのリストについては
query.setHint(QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache);
、the EclipseLink docsを見ています。
あなたは完全にデータベース結果のキャッシュを無効にしたい場合はまた、あなたのpersistence.xml
に次のように試すことができます。
<property name="eclipselink.query-results-cache" value="false"/>
という名前のクエリは(SQLの中に)一度コンパイルされます。 JPAプロバイダ固有のクエリRESULTSキャッシングをオンにしない限り、常に実行する必要があります。しかし、 – DN1
@ DN1を有効にしたものは定義していません。どこでこのような設定を見つけることができますか?私は設定をしなかったので! –
EMFを定義したので、「何らかの」設定を行いました。あなたはLOGを持っているので、どのSQLが呼び出されたかを見ることができます。 – DN1