'da varsayılan işlem yalıtım düzeyi nasıl belirlenir Grails uygulamasında varsayılan işlem yalıtımı düzeyinin nasıl belirtileceğini anlayamıyorum. Lütfen yardım et ve hatanın nerede olduğunu göster. Detaylar aşağıdadır.Grails
Grails: 1.3.7
Veritabanı: 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
}
Sonra uygulamanın gezinmek ve aynı aşağıdaki sorguyu yürütmek ediyorum süresi:
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
verir:
2 READ_COMMITTED anlamına gelir. 1'i, yani READ_UNCOMMITTED'i görmeyi bekliyorum.
açıkça belirtirseniz
: beklendiği gibi @Transactional (izolasyon = Isolation.READ_UNCOMMITTED)sorgu yukarıdaki 1 döndürür. Ancak, tüm hizmetlerimi başvurumda belirtmek istemiyorum. Neyi eksik? Bu özellikleri altında ayarlanması gerekir
Cevabınız için teşekkürler. Bunu denedi. Uygulama başlatılamadı. Günlük hatası: org.springframework.beans.NotWritablePropertyException: Fasulye sınıfı [org.springframework.jdbc.datasource.DriverManagerDataSource] 'ın geçersiz özelliği' defaultTransactionIsolation ': Bean özelliği' defaultTransactionIsolation 'yazılabilir değil veya geçersiz bir ayarlayıcı yöntemi vardır. Setterin parametre tipi, getterin dönüş tipiyle eşleşiyor mu? java.sql.Connection.TRANSACTION_READ_UNCOMMITTED yerine 1 yazıp diğer özellikleri başlatmayı denediğimde aynı özel durumla başarısız olur. –
Bunu bir Oracle veri kaynağı kullanarak denedim ve şu hatayı aldım: 'PoolableConnectionFactory oluşturulamıyor (READ_COMMITTED ve SERIALIZABLE geçerli tek işlem seviyesidir). Dolayısıyla, ayarın veri kaynağına bağlı olabileceği anlaşılıyor. Veri kaynağı yapılandırması için bir 'readOnly' özniteliği vardır, bunun yerine bunu kullanmanızı öneririm. – krock
Andrey, sorununuzu gidermek için dataSource altında "pooled = true" eklemeniz gerekiyor. –