但是,如果要审核的租赁单元具有一对多双向关系,则会通过以下测试。如果要审核的租赁单元具有单向一对多关系,则会失败。怎么会?以及如何通过单向传递?
测试(spock):
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)
}
代码: Rental Unit类是相同的 - 单向和双向
class RentalUnit {
...
static hasMany = [reviews:Review]
static mapping = {
reviews cascade: "all-delete-orphan"
}
...
}
在单向情况下,Review类不包含与Rental Unit相关的任何内容。在双向案例中,评论有额外的一行:
static belongsTo = [rentalUnit: RentalUnit]
(有关完整代码,请参阅我的blog)