名前付きクエリを持つエンティティがあります。eclipselink query-results-cacheが機能しません
@Entity(name = "MyEntity")
@Table(name = "mytable")
//@ReadOnly
@NamedQueries({
@NamedQuery(
name = "exampleFind",
query = "[..]",
hints = {@QueryHint(name= QueryHints.QUERY_RESULTS_CACHE, value= "TRUE")})
})
@Cacheable
@Cache(type = CacheType.FULL)
public class MyEntity {
私は@ReadOnlyで、このクラスに注釈を付けた場合、このクエリはデータベースにヒットしません(結果のみキャッシュを使用しています)が、私は@ReadOnly注釈を削除すると、それは常にデータベースにSQLを実行します。
@ReadOnlyなしでこのキャッシュを有効にするにはどうすればよいですか?結果キャッシュに制限はありますか?私は、我々のアプリケーションでのEclipseLink 2.4.1
ありがとうございました。残念ながら、それは助けにはならない。キャッシュが有効になっているか、いつ更新されているかを確認するために、eclipselinkのキャッシュを記録/監視するオプションはありますか?おそらくこのキャッシュは毎回無効になります。これがデータベースへのSQLクエリが常にある理由です。 – Mario
個々のオブジェクトが共有キャッシュにキャッシュされているかどうかを尋ねることができます。 。これは、IdentityMapAccessor:https://wiki.eclipse.org/EclipseLink/Examples/JPA/Cachingを使用して行うことができます。パフォーマンスの測定はまだまだたくさんありますが、まだ試したことがありません。また、persistence.xmlでeclipselinkのログを細かい詳細に設定することもできます – Thirler