2
最近我從Grails 1.3.9升級到2.2.4,並注意到一些不連貫的行爲:「連接」映射。我創建了一個簡單的grails項目來演示問題。Grails抓取:「加入」混淆
報告域:
class Report {
String name
static hasMany = [variables:Variable]
static mapping = {
variables cascade: "all-delete-orphan", fetch: "join"
}
}
可變域:
class Variable {
String name
static belongsTo = [parent:Report]
}
運行Grails的控制檯下面的腳本在2.2.4:
if(!Report.findByName("Test")){
Report report = new Report(name:"Test")
Variable var1 = new Variable(name:"var")
Variable var2 = new Variable(name:"var2")
report.addToVariables(var1)
report.addToVariables(var2)
report.save(flush:true)
}
def report2 = Report.findByName("Test")
println report2.variables
def report3 = Report.findAllByName("Test")
println report3.get(0).variables
def report4 = Report.findByName("Test",[fetch:[variables:"eager"]])
println report4.variables
提供了以下的輸出:
關於腳本的首次運行:
[findbytest.Variable : 1, findbytest.Variable : 2]
[findbytest.Variable : 1, findbytest.Variable : 2]
[findbytest.Variable : 1, findbytest.Variable : 2]
在第二和所有後續腳本的運行:
[findbytest.Variable : 1]
[findbytest.Variable : 1]
[findbytest.Variable : 1]
取出取:「加入」並重新運行腳本每次給出了下面的輸出時間:
[findbytest.Variable : 1, findbytest.Variable : 2]
[findbytest.Variable : 1, findbytest.Variable : 2]
[findbytest.Variable : 1, findbytest.Variable : 2]
運行相同的腳本在1.3.9與不取指:「加入」給出了下面的輸出每次:
[findbytest.Variable : 1, findbytest.Variable : 2]
[findbytest.Variable : 1, findbytest.Variable : 2]
[findbytest.Variable : 1, findbytest.Variable : 2]
任何幫助或方向表示讚賞。 謝謝!
提供的答案可能是原因,但您在這裏不使用標準,這是唯一的區別,也是爲什麼它在1.3.9和2.2.4之間變化,它們不應該都有錯誤嗎?可能值得檢查生成的sql是什麼(logSql)。同樣在2.4.2中做同樣的項目,看看問題是否得到解決 – 2014-10-09 10:31:43