我正在尝试使用mongoDB grails插件将一些域类放入MongoDB中。有些类保留在MySQL中。即使将域类实例保存到MongoDB中,一切都可以正常工作(例如,在 Controller 代码中的服务中)。但是,如果我尝试从某些not-mongoDB类的afterUpdate()中保存实例,它将无法正常工作。它不会引发任何异常或任何...
我的非mongoDB域类:
class CarState extends AbstractCarState {
...
def afterUpdate() {
def logItemInstance = new CarStateLogItem(this.properties)
logItemInstance.save(failOnError: true)
}
}
MongoDB域类:
class CarStateLogItem extends AbstractCarState {
ObjectId id
static mapWith = "mongo"
...
}
奇怪的是,如果我从 Controller 运行afterUpdate()代码,它将保存到MongoDB中。我缺少什么吗?还是为什么我不能保存实例?
感谢您的任何建议,
马泰奥
最佳答案
我认为您需要启动一个新的transaction
才能保存在mongodb中。如果您注意到,CarState
的事务将是MySQL
。为了与mongodb
事件中的afterUpdate
进行交易,必须有一个新的mongodb事务。试试这个。
def afterUpdate() {
CarStateLogItem.withTransaction{status ->
def logItemInstance = new CarStateLogItem(this.properties)
logItemInstance.save(failOnError: true)
}
}
关于mongodb - Grails MongoDB无法保存在afterUpdate中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664760/