我想知道如果任何人有关于如何确保如果在连接表mm_author_books
,如何确保列(mm_book_id
和mm_author_id
)是唯一的想法? 例如,我不希望该表包含book_id
和author_id
(如1,1和1,1)的重复记录。那么,如何做到这一点...如何确保在多列上应用唯一约束(mm_book_id和mm_author_id)?
class Book {
String title
static belongsTo = Author
static hasMany = [authors:Author]
static mapping = {
authors joinTable:[name:"mm_author_books", key:'mm_book_id' ]
}
}
class Author {
String name
static hasMany = [books:Book]
static mapping = {
books joinTable:[name:"mm_author_books", key:'mm_author_id']
}
}
我在 “mm_author_books” 域名尝试这样做:
class mm_author_books {
String book_agency_name
static constraints = {
book_agency_name(unique:['mm_author_id','mm_book_id'])
}
static belongsTo = [authors:Author, books:Book]
}
但得到以下错误:
Caused by: org.codehaus.groovy.grails.validation.exceptions.ConstraintException: Exception thrown applying constraint [unique] to class [class content_hub_admin.mm_author_books] for value [[mm_author_id, mm_book_id]]: Scope for constraint [unique] of property [name] of class [class content_hub_admin.mm_author_books] must be a valid property name of same class at content_hub_admin.mm_author_books$_clinit_closure1.doCall(mm_author_books.groovy:6) at content_hub_admin.mm_author_books$_clinit_closure1.doCall(mm_author_books.groovy) ... 28 more
感谢&问候
rsheyeah
瞧!它的工作 – 2011-03-14 14:28:02
有没有办法做到这一点,而不创建一个多对多的类? – Luccas 2011-03-14 15:21:45
@Luccas默认情况下,jointable不支持独特的东西。但是,也许你可以将许多属性声明为Set。 – Medrod 2011-03-14 18:34:33