我的Grails節省旅行的實例時出現以下情況例外:Grails的格姆:對象引用一個未保存的瞬態的實例
2011-01-26 22:37:42,801 [HTTP-8090-5] ERROR errors.GrailsExceptionResolver - 對象引用一個未保存的瞬態的實例 - 在沖洗前保存 瞬態的實例:賽艇 org.hibernate.TransientObjectException: 對象引用一個未保存的瞬態 實例 - 沖洗之前保存的瞬態的實例 :賽艇
這個概念很簡單:因爲你需要一些划船一個boattrip,一個coxwain(也劃手)和船:
旅行的樣子(縮短):
class Trip {
Boat boat;
Rower coxwain;
static belongsTo = [Rower,Boat]
static hasMany = [rowers:Rower]
}
和賽艇(縮短)
class Rower {
String firstname;
String name;
Rower reference;
static hasMany = [trips:Trip];
static mappedBy = [trips:"rowers"]
}
跳閘然後被保存在控制器等:
def save = {
def trip = new Trip(params)
// adding Rowers to Trip
if (params.rower instanceof String) {
def r = Rower.get(params?.rower)
if (r != null) {
trip.addToRowers(r)
}
} else {
params?.rower?.each{
rowerid ->
def r = Rower.get(rowerid)
log.info("rowerid (asList): " + rowerid)
if (r != null) {
trip.addToRowers(r)
}
}
}
// saving the new Trip -> EXCEPTION IN NEXT LINE
if(!trip.hasErrors() && trip.save(flush:true)) {
// ...
}
// ...
}
我想我已經設置了正確的域之間的關係。 划船者被添加到旅行中時不會更改。爲什麼Grails想要它保存?爲什麼它是一個短暫的實例?
是否在這兩個控制器模塊發生(即如果和其他)? – 2011-01-26 22:19:14