GORM を使用して、Groovy クラスからデータベースの DDL を生成します。これは素晴らしいことです。ただし、生成された SQL 内のフィールドの順序は、クラス内のフィールドの順序と同じではありません。たとえば、クラスを作成すると
class Person
{
String firstName
String lastName
String address
String email
}
次の SQL が生成されます (MySQL の場合)
CREATE TABLE `test` (
`id` bigint(20) NOT NULL auto_increment,
`version` bigint(20) NOT NULL,
`address` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
フィールドはアルファベット順にソートされています(自動生成された id および version フィールドの後)。この例ではこれで問題ありませんが、フィールドの順序で重要なコンテキスト情報が含まれる、より幅の広いテーブルがいくつかあります。
これが私の質問です: SQL のフィールドを groovy クラスの宣言の順序で並べ替えるように GORM に指示するにはどうすればよいですか?