在Grails的域中添加索引键

时间:2010-05-04 06:38:50

标签: grails gorm

我尝试了这个reference,现在这是我的域名代码:

class SnbrActVector {

    long nid
    String term
    double weight

    static mapping = {
        version false
        nid index:'Nid_Idx'
    }

    static constraints = {
        term(blank:false)
    }
}

我想要做的是为nid列添加索引键。我删除了现有的表并再次运行应用程序,然后重新创建表。但是,当我检查索引列表时,我看不到Nid_Idx,只看到PRIMARY。我是否必须手动创建索引并在我的mysql数据库中将其命名为Nid_idx

3 个答案:

答案 0 :(得分:4)

是的,仅在使用dbCreate = "create"时才有效。

假设我有一个空数据库而我的dbCreate设置为"update"。在这种情况下,不会创建索引。

答案 1 :(得分:1)

您的语法是正确的,因此可能是另一个问题或Grails错误。 我的建议:

  1. 使用grails create-app作为唯一的域(SnbrActVector)创建一个新的grails应用程序(grails create-domain...)。复制你的代码。
  2. 检查您的 DataSource.groovy 文件是否有dbCreate = "create-drop"
  3. 验证 SnbrActVector 表的索引。
  4. 如果您看到为nid列创建的索引,则表示您的应用程序存在问题(您可能没有使用“create-drop”或其他内容)

    如果未创建索引=>这是一个grails错误,你应该打开一个JIRA问题here

答案 2 :(得分:0)

您可能需要添加列名以使其触发,例如

static mapping = {
        version false
        nid column:'nid', index:'Nid_Idx'
    }