Grails GORM关系映射
我有3个域类User、Server、Quota,我想用以下关系映射它们Grails GORM关系映射,grails,gorm,grails-domain-class,Grails,Gorm,Grails Domain Class,我有3个域类User、Server、Quota,我想用以下关系映射它们 用户可以使用不同的配额访问多个服务器 但它不应允许用户使用不同的配额访问同一台服务器(或者每个用户可能对每台服务器只有一个条目) 您可以在用户和服务器之间创建NxN关系。但是,需要为该关系创建一个类。这是必需的,因为您需要属性配额。按照NxN关系的标准方式,Grails(Hibernate)不会为其创建类 您将需要三个课程: 用户、服务器、用户服务器 Class UserServer { int quota sta
- 用户可以使用不同的配额访问多个服务器
- 但它不应允许用户使用不同的配额访问同一台服务器(或者每个用户可能对每台服务器只有一个条目)
Class UserServer {
int quota
static belongsTo = [user:User, server:Server]
static constraints = {user unique: 'server'}
}
唯一的约束非常重要,因为正如您所说,一个用户可能对每个服务器只有一个条目
要链接和取消链接用户和服务器,可以使用以下方法:
Class UserServer {
int quota
static belongsTo = [user:User, server:Server]
static constraints = {user unique: 'server'}
static PackScheme link(User user, Server server) {
UserServer userServer = UserServer.findByUserAndServer(user, server)
if (!userServer) {
userServer = new UserServer()
user.addToUserServers(userServer)
server.addToUserServers(userServer)
userServer.save()
}
return userServer
}
static void unlink(User user, Server server) {
UserServer userServer = UserServer.findByUserAndServer(user, server)
if (userServer) {
user.removeFromUserServers(userServer)
server.removeFromUserServers(userServer)
userServer.delete()
}
}
}
注意,您需要在用户和服务器中创建一个名为userServers:UserServer的hasMany关系
此解决方案基于以下链接:,问题是?