2番目からデータをフェッチするために使用されるEclipse Link 2.3.2/2.6.1でヒントが動作しないレベルキャッシュ 使用するヒントEclipse Linkで使用する場合、javax.persistence.cache.retrieveModeおよびjavax.persistence.cache.retrieveModeがNamedQueryで機能しないORM
@QueryHint(name = "javax.persistence.cache.retrieveMode", value = "USE"),
@QueryHint(name = "javax.persistence.cache.storeMode ", value = "USE")
以下のオプションを試してみてください。
1. Added JPA Hints to Named query itself
@NamedQuery(
name = TestEntity.FIND_BY_CODE,
query = "select t from Test t where t.code = :code",
hints = {
@QueryHint(name = "javax.persistence.cache.retrieveMode", value = "USE"),
@QueryHint(name = "javax.persistence.cache.storeMode ", value = "USE") })
2. Adding hints to the Entity Manager Itself after injecting it
em.setProperty("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE);
em.setProperty("javax.persistence.cache.storeMode", CacheRetrieveMode.USE);
3. Added JPA hints at the time of Query execution
em.createNamedQuery(TestEntity.FIND_BY_CODE,
AlertCategoryType.class).setHint("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE)
.setHint("javax.persistence.cache.storeMode", CacheStoreMode.USE)
.setParameter("code", code).getSingleResult();
上記ヒントの使用方法はありませんでした。次に私は、これらのヒントを設定した後に形成されたデータベースベースのクエリ は、以下のキー/値のペアとしてヒントを渡していることを発見した3つの異なるオプションでデバッグを試みました。
eclipselink.query.hints => {javax.persistence.cache.retrieveMode=USE, javax.persistence.cache.storeMode=USE}
ここで、JPLヒントを設定しても、eclipselink.query.hintsはキーです。これは私たちがこれを変更することを支配していないものです。
私は以下のようにEclipse Linkから提供されたヒントを渡すと、期待どおりに動作し始め、結果はキャッシュから取得され、DBでは取得されません。
eclipselink.query.hints => {eclipselink.query-results-cache.size=500, eclipselink.query-results-cache=true}
これは、Eclipseリンクを使用すると、Queryで表示される[上の図]のキーに従ってEclipse Linkのヒントのみを認識することを意味します。
JPAは、私が使用している
環境の作業が
- Eclispeリンク2.3.2/2.6.1
- ランニンフィンGlassfishの4.1 [ペーシュ・カショーロを果たしているヒントを得るために周りのすべての作業を提案して下さい]あなたは状態
- Java8/JEE7