私はEclipseLink 2.5.0を使用しています。次のことを達成しようとしています。
- 非キー フィルターを使用してオブジェクトをクエリします。
- 結果が null でない場合はキャッシュする必要があり、同じフィルター値を持つ今後のクエリはデータベースに送信されません。
- 結果が見つからない場合、結果はキャッシュされず、同じフィルター値を持つ今後のクエリはデータベースに移動する必要があります。
ヒントで達成できるはずだと思いますeclipselink.query-results-cache.ignore-null
が、以下を含めると
<hint name="eclipselink.query-results-cache.ignore-null" value="true"/>
結果はキャッシュされていません。そして、私が以下を含めている場合
<hint name="eclipselink.query-results-cache" value="true"/>
「なし」(レコードが見つからない) もキャッシュされています。私の完全な名前付きクエリは次のようになります
<named-query name="find.Employee.findEmployeeByPlace">
<description>
Find employee by place.
</description>
<query><![CDATA[
select e
from Employee e
where e.place = :place
]]></query>
<!--<hint name="eclipselink.query-results-cache" value="true"/>-->
<hint name="eclipselink.query-results-cache.ignore-null" value="true"/>
</named-query>
私の調査結果はHow to get Glassfish/EclipseLink/JPA to cache entityManager.find results that return nullの反対のようです