【问题标题】:Persist column order from Grails domain to database从 Grails 域到数据库的持久列顺序
【发布时间】:2012-08-16 17:59:24
【问题描述】:

当 Grails 从域对象创建表时,是否可以指定列顺序?我希望它保留域中指定的列顺序。相反,它似乎主要是按字母顺序排列的。我在documentation 中找不到任何东西。我发现 this article 详细说明了指定约束,但这似乎无法解决数据库列的问题。

例子:

class Foo {
    Long id
    String zee
    Integer baz
    Integer bar
}

我希望将数据库列排序为:

id | zee | baz | bar

相反,我得到了更接近:

id | bar | baz | zee

【问题讨论】:

  • 为什么要关心在数据库中创建列的顺序?
  • 我们有约定(即外键引用应该先出现),我也很好奇这是否可能。
  • 虽然不是答案,但您始终可以在 Grails 之外创建数据库并将列按您希望的任何顺序放置,Grails 会很乐意使用您提供的模式(假设只有列顺序与它想默认创建)
  • @cdeszaq 我会回答这个问题。无论如何,我从不让 Grails 在生产环境中创建我的数据库。

标签: grails grails-orm


【解决方案1】:

您始终可以在 Grails 之外创建数据库并将列按您希望的任何顺序放置,Grails 会很乐意使用您提供的架构(假设只有列顺序与默认情况下想要创建的不同)

正如@Burt 所指出的,一个更好的选择是使用database migration 插件来创建(和管理)数据库。它允许您以与数据库无关的方式对数据库进行细粒度控制,并且还具有使您的数据库架构和架构更改与您的代码一起版本化的大量优势, 对于升级和回滚

【讨论】:

【解决方案2】:

据我所知,这是唯一的方法。使用静态约束并将它们与您的订单一起编写

class Foo {
    Long id
    String zee
    Integer baz
    Integer bar
}

static constraints = {
    id()
    zee()
    baz()
    bar()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多