1

我正在使用 EclipseLink 2.5.0 我正在尝试实现以下目标。

  • 使用非键过滤器查询对象。
  • 如果结果不为空,则应将其缓存,并且将来具有相同过滤器值的查询不应进入数据库。
  • 如果未找到结果,则不应缓存结果,并且将来具有相同过滤器值的查询应转到数据库。

我认为,我应该能够通过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>

我的发现似乎与如何让 Glassfish/EclipseLink/JPA 缓存返回 null 的 entityManager.find 结果相反

4

0 回答 0