use*_*745 7 java hibernate hibernate-cache
我有以下代码:
Person a = new Person();
a.setName("John");
Session session = openHibernateSession();
session.beginTransaction();
session.saveOrUpdate(a);
Criteria critera = session.createCriteria(Person.class);
critera.add(Restrictions.eq("name","John"));
Person personFromCache = (Person) criteria.uniqueResult();
...
session.commit();
Run Code Online (Sandbox Code Playgroud)
我想要的是能够从数据库和Hibernate的缓存中搜索对象.以下示例在调用时返回null uniqueResult.有没有办法检索尚未提交到数据库的已保存对象?
如果您搜索的不是 ID,那么 Hibernate 将不会使用一级缓存。Hibernate get 和 load 默认与一级缓存相关,但 criteria 查询则不然。对于你的情况,我这边有两种解决方案
通过刷新会话 = 只需像这样刷新会话session.flush();,同时会话中的数据将同步到数据库,因此将生成 Id,结果 Criteria 查询将在数据库中找到结果并将结果列表给您。
启用hibernate二级缓存 = 您可以通过hibernate缓存提供程序(如ehCache)启用二级缓存并应用该技巧。
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |