当前位置: 首页 > 知识库问答 >
问题:

如何在JPA实体管理器中锁定整个实体(表)

洪彬
2023-03-14

但问题是这将只锁定一行,而我想在计算总行数时锁定整个表(实体)。

请指教。

共有1个答案

吕和风
2023-03-14

据我所知,您不能用JPA锁定整个表。但您当然可以使用本机查询来完成此操作。为什么不在实体中使用这样的序列:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

您将能够并行工作,而不是一个接一个地运行。

如果你真的坚持一个接着一个做,你也可以有一个一列一行的小表格。在那里你可以使用

aRepository.lock(Object);
 类似资料:
  • 我正在使用Spring的事务支持和JPA(Hibernate)来持久化我的实体。一切正常,但我在处理一个请求中的部分更新时陷入困境: 对于每个用户(HTTP)请求,我必须将一个日志条目写入数据库表,即使“主”业务实体的更新失败(例如,由于验证错误)。因此,我的第一个/主要事务get被回滚,但第二个(写日志)应该提交。这似乎可以使用正确的传播级别来写入日志条目: 然而,我的问题是,我在第二个事务中注

  • 在我的实际应用程序中,我有一个业务层,它根据一些业务规则使用JPA来持久化数据,问题是camel JPA事务没有与业务层事务共享。我需要业务类中的EntityManager与Camel事务范围集成,我该怎么做? 下面是一个简单的例子,但这反映了实际设计中的问题。 项目实例 服务级别 骆驼路线 骆驼背景。xml

  • 我是JPA的新手,有一个关于如何处理实体的问题。在我的例子中,我有3个实体:用户、组和事件。 一个事件总是属于一个组。这意味着有一个OneToMulti-Relation。一个用户可以订阅多个组,这意味着有一个ManyToMulti-Relation。现在我遇到麻烦的部分。一个用户也可以订阅多个事件,这意味着也有一个ManyToMulti-Relation。 现在我的问题是。我如何在我的组实体中列

  • 我试图使用spring boot将EntityManager注释注入到我的DAO中,但是得到一个< code > InvalidDataAccessApiUsageException 消息,说没有可用的事务EntityManager。我的印象是,只要Spring Boot从< code>application.yml中获得了我的数据源信息,并且我用< code>@PersitenceContext

  • 我使用的是Spring BOOT应用程序,它将信息存储在数据库中。我得到错误: org.SpringFramework.transaction.CanNotCreateTransactionException:无法为事务打开JPA EntityManager 还尝试了AutoReconnect=true,在db URL中提供了端口号。

  • 在我的DAO类中,假设我有实体管理器'em'是由实体管理器工厂制作的,之后的代码如下所示:- 当我执行上面的代码行时,在堆内存中创建了一个对象,并在其中存储了其实例变量“xyz”的值。 在第3行之后,如我们所知,carEntity对象进入托管状态。它将不会转到数据库,直到我刷新或提交事务。 那么实体管理器如何知道一个实体已经进入托管状态呢?执行后,是否为CarEntity创建了一个新对象?或者它在