java - Hibernate 中的并发访问

标签 java hibernate concurrency

我有以下代码来访问数据库

        Session session = sessionFactory.openSession();

        String hql ="Select o.id FROM Orders o ORDER BY o.id DESC";
        Query query = session.createQuery(hql);
        query.setFirstResult(0);
        query.setMaxResults(1);

根据提取的数据进行一些计算,并且计算产生的数据应该是唯一的

        session.save(inOrder);
        session.flush();

        session.clear();
        session.close();

但是当我在两个请求同时到来时运行此代码时,它们会获得相同的数据并抛出 ConstraintViolationException。

解决这个问题的最佳方法是什么

最佳答案

您可以使用 setLockMode 锁定正在处理的对象,请参阅 docs

关于java - Hibernate 中的并发访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26837293/

相关文章:

java - 在Matlab中逆向im2java?

java - RandomAccessFile 字节顺序问题

java - 中断异常与 while 循环中的 isInterrupted

java - 原子引用的保证

java - Android如何绘制像这样的线性布局角形状

java - 如何从底部始终保持 30dpi 的 toast ?

java - BoneCP 0.7.1.RELEASE 和 hibernate 4.1.*

oracle - Spring-Hibernate 应用程序在 2 个不同的 Oracle DB 中的工作方式不同

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown database 'xyz' . hbm2ddl.auto=更新不工作

java - future.get 在取消时最终在 Callable 中执行之前返回