在Grails中保存Trip的实例时,我得到以下异常:
2011-01-26 22:37:42,801 [http-8090-5] ERROR errors.GrailsExceptionResolver - 对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:Rower org.hibernate.TransientObjectException:object引用未保存的瞬态实例 - 在冲洗之前保存瞬态实例:Rower
这个概念很简单:对于一个游船,你需要一些划船者,一个舵手(也是一个划船者)和一艘船:
旅行看起来像(缩短):
class Trip {
Boat boat;
Rower coxwain;
static belongsTo = [Rower,Boat]
static hasMany = [rowers:Rower]
}
Run Code Online (Sandbox Code Playgroud)
和划船(缩短)
class Rower {
String firstname;
String name;
Rower reference;
static hasMany = [trips:Trip];
static mappedBy = [trips:"rowers"]
}
Run Code Online (Sandbox Code Playgroud)
然后行程保存在控制器中,如:
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) …Run Code Online (Sandbox Code Playgroud)