gpt4 book ai didi

java - 查询 Hibernate 缓存

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:23 26 4
gpt4 key购买 nike

我有以下代码:

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();

我想要的是能够从数据库和 Hibernate 的缓存中搜索对象。以下示例在调用 uniqueResult 时返回 null。有什么方法可以检索尚未提交到数据库的已保存对象?

最佳答案

如果您搜索的不是 ID,那么 Hibernate 将不会使用一级缓存。 Hibernate get 和load 默认与一级缓存相关,但criteria query 没有。在你的情况下,我有两种解决方案

  1. 通过刷新 session = 像这样刷新你的 session 将在数据库中找到结果并将结果列表给您。

  2. 启用 hibernate 二级缓存 = 您可以通过 hibernate 缓存提供程序(如 ehCache)启用二级缓存并应用该技巧。

关于java - 查询 Hibernate 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com