在这里,我面临一个不寻常的问题。在我的理解下,一切都应该正常工作(作为grails初学者),但不起作用:(
我有一个域类User。用户可以有很多 friend 和很多friendRequests。域类中有一个功能可以向其他用户发送好友请求。这是用户域中的代码-
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被设置为发送者!
谁能解释我所缺少的吗?
最佳答案
addToFriendRequests
方法覆盖了发送者。它认为FriendRequest.sender
与User.friendRequests
相反
您的FriendRequest
类将需要两个对User
的引用:一个用于发送者,一个用于接收者。您还需要告诉gorm哪个映射回friendRequests
关系。您可以使用User
类中的映射来做到这一点:
static mappedBy = [friendRequests:'receiver']
关于grails - 如何在Grails中从自身内部设置Domain类的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539933/