我有两个域类。一个是:
class User {
String login
String password
String firstName
String lastName
String address
String email
static constraints = {
login blank:false, size:5..15,matches:/[\S]+/, unique:true
password blank:false, size:5..15,matches:/[\S]+/
firstName blank:false
lastName blank:false
email email: true
}
}
其他是
class AddWebsite {
String website
User user
static constraints = {
website blank:false
website(unique: ['user'])
}
}
我正在后端使用MongoDB。我需要一个特定的登录值,所有siteURL值都应该是唯一的。例如:登录名= abc@gmail.com。然后,该用户只能在数据库中拥有所有唯一的URL。但是,不同的用户可以使用相同的URL。如何使用唯一约束或任何其他方法来做到这一点?
最佳答案
使用嵌入式子文档在SiteURL
内部存储User
实例。然后将集合定义为Set,以确保所有条目都是唯一的。如果要使用默认的mongo集合类型或要保留顺序,请定义一个拦截器,如下所示:
def beforeSave = {
urls = urls.unique()
}
更新:
如果您的网址是纯字符串,请使用默认的原始集合(不使用
hasMany
):class User {
String login
//...
Set urls = new HashSet()
}
关于mongodb - Grails中两个域类的值的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244457/