Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate会话从缓存加载实体_Java_Hibernate_Spring Mvc_Locking - Fatal编程技术网

Java Hibernate会话从缓存加载实体

Java Hibernate会话从缓存加载实体,java,hibernate,spring-mvc,locking,Java,Hibernate,Spring Mvc,Locking,我需要在第一次读取时锁定实体。i、 我将首先使用session.load读取实体,如果实体失败,则使用session.get。当会话第一次使用get读取实体时,我会将其标记为locked lock是transient属性,而不是持久化在DB中。我假设下次调用session.load时,我将从缓存中获取标记为锁定的实体,而不是再次从DB中检索它。但这并没有发生。session.load始终失败,并转到catch块以使用session.get。不知道我的理解错在哪里。谢谢你的帮助。如果有更好的方法来

我需要在第一次读取时锁定实体。i、 我将首先使用session.load读取实体,如果实体失败,则使用session.get。当会话第一次使用get读取实体时,我会将其标记为locked lock是transient属性,而不是持久化在DB中。我假设下次调用session.load时,我将从缓存中获取标记为锁定的实体,而不是再次从DB中检索它。但这并没有发生。session.load始终失败,并转到catch块以使用session.get。不知道我的理解错在哪里。谢谢你的帮助。如果有更好的方法来实现这一点,也请向我提出建议

        entity= service.load(id);
        try{
            entity.getBookingNo();
        }catch(LazyInitializationException e){
            entity= service.getById((id));
        }
        if(entity.getLock()){
            return "Record locked by another user";
        }
        entity.setLock(true);

我认为您上面使用的策略在多用户或集群环境中不起作用


您应该考虑使用它可以将数据库级锁应用到数据。

Load为您提供代理对象。如果对象不在数据库中,则在访问entities方法时将引发异常