2012-08-16 82 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() 
}