0
我的grails應用程序需要連接到現有的mongodb服務器。我正在使用插件':mongodb:3.0.3'來做到這一點。我有一個域類,基本上是空的Grails Mongodb插件不保存
class Thing {
static mapWith = "mongo"
String id
String name
static constraints = { }
static mapping = {
collection "myThing"
id column: '_id', generator: 'assigned'
version false
}
}
,我試圖挽救一個新的域對象在集成測試 - 的前兆控制器動作:
def "create the thing"() {
def thing = new Thing(name: "name", id:"foobar")
when:
def foo = thing.save(flush: true, failOnError:true)
then:
Thing.findByName("name")
}
測試失敗,因爲Thing.findByName返回null,但是,當我深入低級API時,我可以保存一個對象。以下測試通過:
def "create the thing low level"() {
when:
Thing.collection.insert([name:"name"])
then:
Thing.findByName("name")
}
我已經看了看其他計算器問題,他們似乎處理:
- 不使用沖洗,對此我
- 不具有配置設置propertly,我這樣做是因爲我已經從中獲取記錄,並且低級別的API工作。
- 我不因爲failOnError有約束錯誤是真實的
我在做什麼錯?我如何才能使GORM保存起作用,因爲我想使用可用的grails工具。
注意:這不僅僅是一個測試問題,試圖在使用GORM的控制器中保存某些內容也不起作用。調用此動作:
def save() {
def thing = new Thing()
thing.name = "foobar"
respond thing.save(failOnError: true, flush: true)
}
返回{ "class": "com.Thing", "id": null, "name": "foobar" }
並看看數據庫告訴我它沒有保存。
我補充說,行到文件的頂部,它仍然無法以同樣的方式。由於我沒有使用交易服務,也沒有自己創建交易,所以我不確定交易是如何進入等式的。據我所知,集成測試有交易,他們只是在默認情況下最終回滾。 – adeady
@adeady嗯......如果我在POSTGRES中添加這行,它的工作原理和堅持db。我猜想Mongo可能會有一些差異。 –
是的,postgres將沒有問題。我懷疑它是一個插件或數據庫問題 - 但互聯網似乎沒有任何其他人有這個問題,我可以找到 – adeady