我的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