Вопрос

Есть ли способ запустить эти запросы, как будто я добавил (нолоцкий) подсказки к ним?

Это было полезно?

Решение

Если вам действительно нужно это, то вы хотите сделать что-то вроде:

session.connection().setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

который идентичен нолоску.

Прежде чем сделать это, действительно думайте осторожно, если вы хотите сделать грязную читать. Большую часть времени люди делают это, потому что это то, что они всегда делали, а не потому, что это правильная вещь. В частности, это не работает хорошо с кэшированием.

На самом деле, эта нить входит в проблемы немного. Читайте внимательно до принятия решения.

Другие советы

В последней версии Hibernate вы должны сделать это таким образом:

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

Вы можете сделать «с (Nolock)», если вы идете родным. Это экстремально, но если альтернатива меняет уровень изоляции транзакций, вы предпочитаете это сделать.

Обратите внимание, что этот пример для MSSQL.

String sqlQueryString = "SELECT * FROM my_classes_table WITH (nolock) WHERE columnName = :columnValue";

SQLQuery sqlQuery= session.createSQLQuery(sqlQueryString).addEntity(MyClass.class);
sqlQuery.setLong("columnValue", value);
List<MyClass> out = sqlQuery.list();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top