如何找出休眠中用于特定查询的事务隔离级别?

use*_*994 2 java spring hibernate

我正在使用Spring MVC并休眠。我的基础数据库是Sybase ASA。在我的DAO中,我想找出用于查询的交易级别是多少

这就是我的DAO所拥有的。

Session session = getSession();
String SQL_QUERY = "select ..... ";
Query query = session.createSQLQuery(SQL_QUERY);
query.executeUpdate(); 
Run Code Online (Sandbox Code Playgroud)

我提到了此链接,但是这似乎已经过时,因此无法正常工作 。如果未明确设置,hibernate使用的默认隔离级别是什么?

And*_*niy 5

我会说这个问题被错误地提出:查询本身没有任何隔离级别。隔离级别事务的特征。

因此,您很可能想知道当前事务的隔离级别是多少?因此,您很可能不会通过代码来管理此级别。在这种情况下,它由DBMS默认设置或当前设置管理。

此处介绍一种可能的探索方法:

try {
    session = getSessionFactory().openSession();
    txn = session.beginTransaction();
    session.doWork(new Work() {
        @Override
        public void execute(Connection connection) throws SQLException {
            LOGGER.debug("Transaction isolation level is {}", Environment.isolationLevelToString(connection.getTransactionIsolation()));
        }
    });
    txn.commit();
} catch (RuntimeException e) {
    if ( txn != null && txn.isActive() ) txn.rollback();
    throw e;
} finally {
    if (session != null) {
        session.close();
    }
}
Run Code Online (Sandbox Code Playgroud)