У меня есть приложение Grails с - упрощенный - доменный класс, который похож на это:
class Capacity {
static constraints = {
month(blank:false, nullable:false)
company(blank:false, nullable:false)
}
Date month
Company company
String note
...
}
Парная компания месяца должна быть уникальной. (Т.е. они должны быть первичным ключом в DB).
Как я могу определить такое ограничение?
Большое спасибо заранее
Luis
Так как вы хотите, чтобы это было композитный первичный ключ в БД, вам придется объявить, что отображение:
class Capacity implements Serializable {
Date month
Company company
String note
...
static mapping = {
id composite:['month', 'company']
}
}
, который производит следующую таблицу (MySQL):
CREATE
TABLE capacity
(
MONTH DATETIME NOT NULL,
company_id bigint NOT NULL,
version bigint NOT NULL,
note VARCHAR(255) NOT NULL,
PRIMARY KEY (MONTH, company_id),
INDEX FKFBF514BA69595C7A (company_id)
)
ENGINE=MyISAM DEFAULT CHARSET=latin1
Это должно быть что-то вроде:
static constraints = {
month(blank:false, nullable:false, unique:'company')
company(blank:false, nullable:false)
}
посмотрите http://grails.org/doc/latest/ref/constraints/unique.html .