sách gpt4 ai đã đi

Khóa lạc quan mặc định của hibernate có dành cho các đối tượng tách biệt không?

In lại 作者:行者123 更新时间:2023-11-29 03:59:01 32 4
mua khóa gpt4 Nike

我有一个应用程序:

void deleteObj(id){
MyObj obj = getObjById(id);
if (obj == null) {
throw new CustomException("doesn't exists");
}
em.remove(obj);//em is a javax.persistence.EntityManager
}

我还没有明确配置 optimistic locking带有版本字段。但是,如果两个请求并行运行,试图删除同一个对象,那么我有时会得到一个 HibernateOptimisticLockingFailureException,有时会得到“CustomException”。

在没有显式设置乐观锁的情况下获取 HibernateOptimisticLockingFailureException 是否正常?是否为分离对象 hibernate 默认的乐观锁定?

你正在做什么来处理这个 HibernateOptimisticLockingFailureException ?重试或使用“服务器繁忙”等默认消息通知用户?

1 Câu trả lời

Đầu tiên,HibernateOptimisticLockingFailureException是Spring持久化异常翻译机制的结果。它被抛出以响应 StaleStateException ,其 javadoc 说:

Thrown when a version number or timestamp check failed, indicating that the Session contained stale data (when using long transactions with versioning). Also occurs if we try delete or update a row that does not exist.

从常识上看,乐观锁异常发生在数据修改语句返回意外数量的受影响行时。这可能是由于版本值不匹配以及根本不存在该行引起的。

要确保该实体确实被删除,您可以尝试在删除后立即通过 em.flush() 刷新上下文并捕获它抛出的异常(注意它应该是 PersistenceExceptionStaleStateException 为原因)。

关于java - 是否 hibernate 分离对象的默认乐观锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619709/

32 4 0
Bài viết được đề xuất: java - Struts 中的向导表单
Bài viết được đề xuất: java - 删除家谱中的节点
Bài viết được đề xuất: mysql - 在 mySql 查询中获取随机值
Bài viết được đề xuất: java - 使用java执行批处理文件后无法关闭命令提示符
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com