ただし、Rental Unit to Review に一対多の双方向関係がある場合に合格する次のテストがあります。レビューするレンタル ユニットが単方向の 1 対多の関係にある場合、失敗します。どうして?また、単方向でも通過させる方法は?
テスト (スポック):
def "one-to-many relationship between RentalUnit and Review"() {
when:"adding shared review will result referenced by last rental unit"
def review3 = Review.build().save(flush: true)
def rentalUnit1 = RentalUnit.build().addToReviews(review3).save(flush: true)
def rentalUnit2 = RentalUnit.build().addToReviews(review3).save(flush: true)
rentalUnit1.refresh()
then:
!rentalUnit1.reviews.contains(review3)
}
コード: レンタル ユニット クラスは同じ - 単方向と双方向の両方
class RentalUnit {
...
static hasMany = [reviews:Review]
static mapping = {
reviews cascade: "all-delete-orphan"
}
...
}
単方向の場合、Review クラスには Rental Unit に関連するものは何も含まれていません。双方向の場合、レビューには追加の行があります。
static belongsTo = [rentalUnit: RentalUnit]
(完全なコードについては、私のブログで)