Grails MongoDB NoSuchFieldError:ACKNOWLEDGED

时间:2013-10-21 03:40:06

标签: mongodb grails

使用不同版本的mongodb java客户端时获取更新错误。 我运行了依赖项报告,发现只存在1个用于mongdb java驱动程序的jar。 请指导为什么会出现此错误,我正在尝试通过GORM更新域对象。

dependencies {
 runtime "org.mongodb:mongo-java-driver:2.9.0"
}


 plugins {
compile (":mongodb:1.3.0"){
    excludes "mongo-java-driver";
}
}


Message: ACKNOWLEDGED
Line | Method
    ->>  646 | doInDB                  in                 
org.grails.datastore.mapping.mongo.engine.MongoEntityPersister$5

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    616 | updateEntry             in 
org.grails.datastore.mapping.mongo.engine.MongoEntityPersister
|     78 | updateEntry . . . . . . in     ''
|    846 | run                     in       
org.grails.datastore.mapping.engine.NativeEntryEntityPersister$2
|     33 | executePendingOperation in  
org.grails.datastore.mapping.core.impl.PendingOperationExecution
|    364 | flushPendingOperations  in org.grails.datastore.mapping.core.AbstractSession
|    343 | flushPendingUpdates . . in     ''
|    263 | flush                   in     ''
|    126 | flush . . . . . . . . . in org.grails.datastore.mapping.mongo.MongoSession

1 个答案:

答案 0 :(得分:1)

WriteConcern.ACKNOWLEDGED仅适用于MongoDB Java驱动程序版本2.10及更高版本。您需要更新Mongo版本:

dependencies {
 runtime "org.mongodb:mongo-java-driver:2.10.0"
}

或者您需要在此处删除您对mongo驱动程序的排除:

compile (":mongodb:1.3.0"){
    excludes "mongo-java-driver";
}

并将其替换为:

compile ":mongodb:1.3.0"

如果你选择第二个选项,这将使用Mongo Java Driver的2.11版本,这是这个插件代码所期望的。使用早于2.11的驱动程序版本可能会导致这类问题。