gpt4 book ai didi

grails - GORM 映射 : make an index unique

转载 作者:行者123 更新时间:2023-12-02 13:59:01 25 4
gpt4 key购买 nike

我今天感觉有点慢。我正在尝试做一些我认为非常简单的事情。我有一个名为“name”的属性的域类。我希望“名称”具有索引,并且我希望索引要求“名称”是唯一的。我设置了唯一约束并尝试创建索引。我无法从 Gorm 文档中了解如何将唯一属性添加到索引中。这是一些代码:

class Project {
String name

static hasMany = [things:Things]

static mapping = {
name index:'name_idx'
}
static constraints = {
name(unique:true)
}
}

一切都很好,除了在 mysql 中“显示项目索引”时,它显示我的名称键不唯一。我知道问题在于我没有在映射中指定唯一性,但坦率地说,gorm 的文档让我很头疼。我看到了关于列的各种内容,但我无法在网络上的任何地方找到一个示例来显示我想要做什么。我不需要复杂的映射或复合键,我只想知道将唯一属性添加到上面的映射声明的语法。欢迎任何建议。

我还做了一个 grails 导出模式并看到以下内容:
create index name_idx on project (name);

没有任何内容表明该索引需要唯一值

一个相关的后续问题是,一旦我成功地使该索引唯一,当我保存 Project 实例并且名称不唯一时,我应该期待什么类型的错误?是否有特定的异常抛出?我意识到,即使我检查给定的“名称”是否唯一,仍有可能在我保存它时,可能会有一行使用该名称。

我很确定做我想做的事的语法很简单,但我找不到一个简单的例子来教育自己。我去过 this页面,但它没有解释如何强制执行唯一性。我想在名称索引级别强制执行它。

最佳答案

indexColumn 允许配置其他选项。这可能就是你要找的。

static mapping = {
name indexColumn:[name:'name_idx', unique:true]
}

Grails Documentation for indexColumn

关于grails - GORM 映射 : make an index unique,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com