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 を返します。ただし、アプリケーション内のすべてのサービスを属性にしたくはありません。私は何が欠けていますか?