Я пытался добавить пессимистическую блокировку в моем creteria, как это показано в доке http://grails.org/doc/latest/guide/GORM.html#locking, но у меня было исключение:Grails/Спящий режим: добавить пессимистическую блокировку на использование creteria
«ERROR util.JDBCExceptionReporter - функция не поддерживается : "FOR UPDATE & & РЕГИСТРИРУЙТЕСЬ"; заявление SQL: ... org.hibernate.exception.GenericJDBCException: не удалось выполнить запрос»
Я пытался добавить замок в двух местах:
def ParentInstance = Parent.createCriteria().get {
Childs {
idEq(ChildInstance.id)
lock true
}
И
def ParentInstance = Parent.createCriteria().get {
Childs {
idEq(ChildInstance.id)
}
lock true
}
Дополнительный вопрос: Является ли это правильный способ использовать пессимистическую блокировку ассоциации?
Спасибо
домена
class Parent{
static hasMany = [Childs:Child]
}
class Child{
}
DataSource.groovy
dataSource {
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:myApp_prodDb;MVCC=TRUE"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:myApp_testDb;MVCC=TRUE"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:h2:myApp_prodDb;MVCC=TRUE"
pooled = true
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
}
}
В какой базе данных у вас есть? –
Я использую базу спящего режима – Jils
Спящий режим - это всего лишь слой между вашим приложением и базой данных. Эта база данных может быть H2 (база данных in-mem предоставлена Grails), PostgreSQL, SQL Server, Oracle, MySql ... Можете ли вы перечислить содержимое вашего файла DataSource.groovy (обязательно удалите любую личную информацию, такую как IP-адреса и пароли, однако)? –