【发布时间】:2012-05-15 19:43:49
【问题描述】:
我不知道如何在 Grails 应用程序中指定默认事务隔离级别。请帮助并指出我的错误在哪里。以下是详细信息。
Grails:1.3.7
数据库:Sql Server 2008。
DataSource.groovy:
dataSource {
...
driverClassName = "net.sourceforge.jtds.jdbc.Driver"
dialect = org.hibernate.dialect.SQLServerDialect
defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
}
hibernate {
...
connection.isolation = java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
}
然后我正在浏览应用程序并同时执行以下查询:
SELECT session_id, host_name, program_name, login_name, status, transaction_isolation_level
FROM sys.dm_exec_sessions
WHERE host_name IS NOT NULL AND login_name = 'cm'
ORDER BY host_name, program_name
返回:
session_id host_name program_name login_name status transaction_isolation_level
61 ANDREYK-WS jTDS cm running 2
2 表示 READ_COMMITTED。我希望看到 1,即 READ_UNCOMMITTED。
如果我明确指定: @Transactional(isolation=Isolation.READ_UNCOMMITTED)
上面的查询按预期返回 1。 但是,我不想将所有服务归于我的应用程序中。 我错过了什么?
【问题讨论】:
标签: grails transactions isolation-level