为什么查询缓存在这里不起作用?

时间:2014-02-17 17:29:41

标签: java hibernate

这是我的员工类

@Entity
@Cacheable
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Employee {
// fields
}

Hibernate cfg文件是

<property name="cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

在我的测试课程中: -

首先我要通过查询更新员工1

    Query employeeUpdateQuery=session.createQuery("update Employee set employeeName=:employeeName where employeeId=1");
    employeeUpdateQuery.setCacheable(true);
    employeeUpdateQuery.setParameter("employeeName", "Employee 1.2"); 
    employeeUpdateQuery.executeUpdate(); // line 1

然后我通过查询获得员工1

    employeeQuery=session.createQuery("from Employee where employeeId=1");
    employeeQuery.setCacheable(true);
    employee1=(Employee)employeeQuery.uniqueResult();// Query got fired. line 2

我的问题是,当我使用带有READ_WRITE的查询缓存时,为什么在第1行触发了查询。  不应该在第1行更新查询缓存,并且应该从第2行的查询缓存中获取结果而不是命中  db query?

0 个答案:

没有答案