使用nolock进行Java Hibernate HQL查询

Sar*_*rit 10 java orm hibernate nolock

有没有办法运行这些查询,好像我添加了一个(NOLOCK)提示?

Gar*_*ryF 8

如果你真的需要这个,那么你想做的事情如下:

session.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
Run Code Online (Sandbox Code Playgroud)

这与nolock相同.

在你这样做之前,要仔细考虑是否要进行脏读.大多数时候人们这样做是因为这是他们一直以来所做的事情,而不是因为这是正确的事情.特别是,这对缓存不起作用.

实际上,这个问题稍微涉及了一些问题.在决定之前仔细阅读.

  • 在最新版本的Hibernate中,似乎从API中删除了connection().关于如何在没有连接对象的情况下获得类似效果的任何想法? (2认同)

小智 7

在最新版本的Hibernate中你必须这样做:

  Session session = (Session) em.getDelegate();
        session.doWork(new Work() {
            @Override
            public void execute(Connection connection) throws SQLException {
                connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
            }
        });
Run Code Online (Sandbox Code Playgroud)