2

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 に指示するにはどうすればよいですか?

4

2 に答える 2

1

順序を指定する方法はないようですが、いつでも必要に応じて独自のテーブルを作成し、ドメイン クラスで名前のマッピングを提供できます。GORM にテーブルを作成させてから、正しい順序でテーブルを再作成し、その後 GORM で自動 DDL をオフにすることもできます。GORM が選択したフィールド名とテーブル名を使用する場合、マッピングを追加する必要はありません。

于 2009-02-03T12:47:02.637 に答える