Я чувствую себя немного медленно сегодня.Я пытаюсь сделать то, что мне кажется очень простым.У меня есть класс Домен со свойством под названием «имя».Я хочу, чтобы у 'name' был индекс, и я хочу, чтобы индекс требовал, чтобы 'name' было уникальным.Я установил уникальное ограничение и попытался создать индекс.Из документации Gorm я не могу понять, как добавить уникальный индекс в индекс.Вот некоторый код:
class Project {
String name
static hasMany = [things:Things]
static mapping = {
name index:'name_idx'
}
static constraints = {
name(unique:true)
}
}
Все хорошо с вышеперечисленным, за исключением того, что когда "show indexes from project" в mysql показывает, мой ключ имени не уникален.Я знаю, что проблема в том, что я не указываю уникальность в картографии, но, откровенно говоря, документы по Горму причиняют мне боль.Я вижу разные вещи о столбцах, но нигде в Интернете не могу найти ни одного примера, который бы показывал, что я хочу делать.Мне не нужны сложные сопоставления или составные ключи, я просто хочу знать синтаксис для добавления уникального атрибута в объявление сопоставления выше.Любой совет приветствуется.
Я также сделал схему экспорта grails и вижу следующее:
create index name_idx on project (name);
Ничто в этом смысле для указания этого индекса не требует уникальных значений
СвязанныйСледующий вопрос будет, как только мне удастся сделать этот индекс уникальным, какой тип ошибки мне следует ожидать, когда я сохраню экземпляр Project, а имя не является уникальным?Есть ли конкретное исключение?Я понимаю, что даже если я проверю, что данное «имя» уникально, все равно есть вероятность, что к тому времени, когда я его сохраню, может появиться строка с этим именем.
Я вполне уверен, что синтаксисТо, что я хочу, - это просто, но я просто не могу найти простой пример, с помощью которого можно себя научить.Я был на этой странице, но она не объясняет, КАК уникальность обеспечивается.Я хотел бы применить его на уровне индекса имени.