我正在使用Grails 4.0.1进行新项目。在此项目中,我有两个域类,第一个是Person
,第二个是Document
。这些类之间存在多对多关联。但是,我还需要在每个文档中存储每个人的顺序(位置)。在Grails 4中有什么方法可以对这种行为进行建模吗?
答案 0 :(得分:0)
您必须将Document.persons
定义为List
:
class Document {
List<Person> persons
static hasMany = [ persons:Person ]
}
class Person {
static hasMany = [ documents:Document ]
}
有关更多信息,请参见ref-doc
答案 1 :(得分:0)
几个小时后,我得到了更适合我的用例的解决方案。这是解决方案:
我们创建两个基类:Person
和Document
:
class Person {
String name
static hasMany = [documentPerson: DocumentPerson]
static constraints = {
name blank: false, nullable: false, maxSize: 255
documentPerson nullable: true
}
}
class Document {
String title
static hasMany = [documentPerson: DocumentPerson]
static mapping = {
tablePerHierarchy false
}
static constraints = {
title blank: false, maxSize: 255, nullable: true
documentPerson nullable: true
}
}
接下来,我们定义类DocumentPerson
:
class DocumentPerson {
Integer position
Person person
Document document
static constraints = {
position nullable: false
document nullable: false
person nullable: false
}
}
这时,我们在数据库中有了三个表。