我在这里遇到了一个不寻常的问题。一切都应该在我的理解(作为grails初学者),但不工作:(
我有一个域类用户。用户可以有很多朋友和很多朋友请求。域类中有一个函数将好友请求发送给其他用户。这是来自用户域的代码 -
static hasMany = [friends: User, friendRequests: FriendRequest]
static mappedBy = [friendRequests:'receiver']
def sendFriendRequest(User toUser) {
if(!isFriend(toUser)) {
FriendRequest requestToSend = new FriendRequest(status:'pending', sender: this)
toUser.addToFriendRequests(requestToSend)
return true
}
return false
}
FriendRequest类是 -
class FriendRequest {
String status
User sender
static constraints = {
status(inList:["accepted", "pending", "rejected"])
}
static belongsTo = [receiver:User]
}
现在,问题是,我期待当前的User对象,我正在运行该函数将被设置为friendRequest的发送者。但奇怪的是,我作为参数传递的toUser被设置为发送者!
任何人都可以解释我错过的东西吗?
答案 0 :(得分:1)
addToFriendRequests
方法覆盖了发件人。它认为FriendRequest.sender
是User.friendRequests
您的FriendRequest
课程需要两个User
的引用:一个用于发送者,一个用于接收者。你还需要告诉gorm哪一个映射回friendRequests
关系。您可以使用User
类中的映射执行此操作:
static mappedBy = [friendRequests:'receiver']