Pregunta

Uso GORM para generar el DDL de mi base de datos a partir de clases maravillosas. Lo cual es genial. Sin embargo, el orden de los campos en el SQL generado no es el mismo que el orden de los campos en la clase. Por ejemplo, si creo la clase

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

se genera el siguiente SQL (para 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

Los campos se han ordenado en orden alfabético (después de los campos de ID y versión autogenerados). Esto esta bien. en este caso, pero tengo algunas tablas mucho más amplias en las que hay información contextual importante en el orden de los campos.

Aquí está mi pregunta: ¿Cómo le dice a GORM que ordene los campos en SQL en el orden de la declaración en la clase groovy?

¿Fue útil?

Solución

No parece haber una forma de especificar el orden, pero siempre puede crear sus propias tablas como desee y proporcionar asignaciones de nombres en sus clases de dominio. También puede dejar que GORM cree las tablas, y luego recrear las tablas en el orden correcto, y luego apagar el material DDL automático en GORM. Si usa los nombres de campo y tabla que eligió GORM, no necesitará agregar ninguna asignación.

Otros consejos

No estoy absolutamente seguro de esto, pero el cierre de restricciones define el orden de los campos en las vistas, tal vez eso se refleje en los campos de las tablas.

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

static constraints = {
  firstName()
  lastName()
  address()
  email()
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top