gpt4 book ai didi

Hibernate session.get(..) 方法没有命中数据库

转载 作者:行者123 更新时间:2023-12-02 05:00:12 25 4
gpt4 key购买 nike

Hibernate 新手。我只是想了解 session.get() 方法“如果对象已被缓存,则避免数据库命中”

List<Employee> employees1 = session.createCriteria(Employee.class).list();

Main main = new Main();
try {
synchronized (main) {
main.wait(10000);
}
} catch (InterruptedException e) {e.printStackTrace();}

Employee employees2 = (Employee)session.get(Employee.class, new Long(1));
System.out.println(employees2.getFirstname() + " , "+ employees2.getLastname() );
  1. 在第一行中,我得到了一个名字为“Kevin”的记录,姓氏为“Papad”

  2. 在等待的过程中,我访问了数据库并将名字更改为“steve”

  3. session.get() 没有访问数据库并让我将名字值设为“Kevin”,将姓氏设为“Papad”,这是错误的。

我一直在等待,因为任何人都可以同时更改数据库中的值(在上面的第 1 步和第 3 步之间),在这种情况下,我如何才能在第 3 步中获得正确的值?即,“史蒂夫”的名字

我需要对我的代码进行哪些更改?

如果我的理解/方法有误,请指正。

最佳答案

您可以使用要重新加载的实体调用 session.refresh(Object)http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#objectstate-loading

注意:Javadoc中有警告关于这个的用法,看这个thread进行讨论。

关于Hibernate session.get(..) 方法没有命中数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17100624/

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