tôi nhận được ngoại lệ sau khi lưu một thể hiện của chuyến đi trong Grails:Grails Gorm: Object tham chiếu một thể hiện thoáng qua chưa được lưu
2011-01-26 22: 37: 42.801 [http-8090-5] ERROR errors.GrailsExceptionResolver - đối tượng tham chiếu một thể hiện thoáng qua chưa được lưu - lưu dụ thoáng qua trước khi xả nước: chèo thuyền org.hibernate.TransientObjectException: đối tượng tham chiếu một chưa được lưu thoáng dụ - lưu dụ thoáng trước khi xả nước: chèo thuyền
Khái niệm này rất đơn giản: Đối với một boattrip bạn cần một số tay chèo, một coxwain (cũng là một chèo thuyền) và một chiếc thuyền:
chuyến đi trông giống như (rút ngắn):
class Trip {
Boat boat;
Rower coxwain;
static belongsTo = [Rower,Boat]
static hasMany = [rowers:Rower]
}
và chèo thuyền (rút ngắn)
class Rower {
String firstname;
String name;
Rower reference;
static hasMany = [trips:Trip];
static mappedBy = [trips:"rowers"]
}
chuyến đi sau đó được lưu trong bộ điều khiển như:
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)) {
// ...
}
// ...
}
Tôi nghĩ rằng tôi đã đặt mối quan hệ giữa các tên miền chính xác. Rower không thay đổi khi nó được thêm vào Trip. Tại sao Grails lại muốn nó cứu? tại sao nó là một ví dụ thoáng qua?
Liệu nó xảy ra ở cả hai khối điều khiển (ví dụ: nếu và người khác)? –
Bạn có nhận được thông báo đăng nhập nào không? –