Question

J'utilise GORM pour générer le DDL de ma base de données à partir de classes groovy. Qui est genial. Cependant, l'ordre des champs dans le SQL généré n'est pas le même que l'ordre des champs dans la classe. Par exemple, si je crée la classe

class Person
{
  String firstName
  String lastName
  String address
  String email
}

le code SQL suivant est généré (pour 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

Les champs ont été triés dans l’ordre alphabétique (après les champs id et version générés automatiquement). C'est acceptable. dans ce cas, mais j’ai quelques tableaux beaucoup plus vastes dans lesquels figurent des informations contextuelles importantes dans l’ordre des champs.

Voici ma question: comment pouvez-vous dire à GORM d’ordonner les champs en SQL dans l’ordre de déclaration dans la classe groovy?

Était-ce utile?

La solution

Il ne semble pas y avoir de moyen de spécifier l'ordre, mais vous pouvez toujours créer vos propres tables comme vous le souhaitez et fournir des mappages de noms dans vos classes de domaine. Vous pouvez également laisser GORM créer les tables, puis les recréer dans le bon ordre, puis désactiver le processus de DDL automatique dans GORM. Si vous utilisez les noms de champs et de tables choisis par GORM, vous n'avez pas besoin d'ajouter de mappages.

Autres conseils

Je ne suis pas tout à fait sûr à ce sujet, mais la fermeture des contraintes définit l'ordre des champs dans les vues, ce qui peut refléter les champs des tables.

class Person
{
  String firstName
  String lastName
  String address
  String email
}

static constraints = {
  firstName()
  lastName()
  address()
  email()
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top