2012-08-16 26 views
3

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

例子:

id | zee | baz | bar 

相反,我得到的东西更接近:

id | bar | baz | zee 
+0

为什么你关心什么顺序列在DB创建写? – cdeszaq 2012-08-16 18:22:52

+0

我们有约定(即外键引用应该先来),我也很好奇,如果这是可能的。 – Igor 2012-08-16 18:24:21

+3

虽然不是答案,但您始终可以在Grails之外创建数据库,并按照您希望的顺序放置列,并且Grails将很高兴地使用您提供的模式(假设只有列顺序与默认情况下创建的顺序不同) – cdeszaq 2012-08-16 18:26:28

回答

2

您可以随时

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

我想的数据库列作为再订购在Grails之外创建数据库并按照您希望的顺序放置这些列,并且Grails会很高兴地使用您的模式提供(假设只列的顺序是从它想要的东西默认创建不同)

一个更好的选择,因为@Burt指出的那样,是使用database migration插件创建(和管理)的数据库。它可以让您以与数据库无关的方式对数据库进行细化控制,并且还具有使您的数据库架构和模式更改与您的代码一起版本化的优势,用于升级和回滚

+1

使用http://grails.org/plugin/database-migration插件 - 这样你就可以对数据库进行很多控制。 – 2012-08-16 22:28:11

1

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

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

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