gpt4 book ai didi

grails - 如何在Grails中从自身内部设置Domain类的引用?

转载 作者:行者123 更新时间:2023-12-02 14:46:36 26 4
gpt4 key购买 nike

在这里,我面临一个不寻常的问题。在我的理解下,一切都应该正常工作(作为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.senderUser.friendRequests相反

您的FriendRequest类将需要两个对User的引用:一个用于发送者,一个用于接收者。您还需要告诉gorm哪个映射回friendRequests关系。您可以使用User类中的映射来做到这一点:

static mappedBy = [friendRequests:'receiver']

关于grails - 如何在Grails中从自身内部设置Domain类的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com