RentalUnitとReviewの間には多対多の関係があります(複数のレンタルユニットに滞在するゲストにはレビューがある場合があります)。RentalUnitからReviewへのカスケードはありますが、ReviewからRentalUnitへのカスケードはありません。
テストで作業しているときに、GORMセッションで次の不整合が見つかりました
def review2 = new Review(rentalUnits:[rentalUnit]、....、isApproved:false).save(flush:true)review2.addToRentalUnits(rentalUnit2)
'rentalUnit2'オブジェクトは'review2'に関連付けられますが、'rentalUnit'は関連付けられません。
初期化時またはaddTo*を介してRentalUnitオブジェクトを渡すときに、一貫したセッションを確保するにはどうすればよいですか?
psここに完全なコードクラスがありますレビュー{文字列submitedBy文字列コンテンツ文字列dateReceivedブールisApproved
final static DateFormat DATEFORMAT = DateFormat.getDateInstance(DateFormat.MEDIUM)
static belongsTo = RentalUnit
static hasMany = [rentalUnits: RentalUnit]
static mapping = {
rentalUnits cascade: "none"
}
static constraints = {
submittedBy blank: false, size: 3..50
content blank: false, size: 5..255
dateReceived blank: false, size: 11..12, validator: {
try{
Date date = DATEFORMAT.parse(it)
return DATEFORMAT.format(date) == it
}catch(ParseException exception){
return false
}
}
rentalUnits nullable: false
}
}
classRentalUnit{文字列名文字列ニックネームアドレスアドレスstatichasMany= [reviews:Review]
static mapping = {
reviews cascade: "all-delete-orphan"
}
static constraints = {
name blank: false, unique: true
nickname blank: false
}
}