Pregunta

Tengo una clase de dominio Grails 1.3.7 que se declara así:

class Document {
    String url

    Map metadata = new HashMap()

    static constraints = {
        url(nullable:false, blank: false, maxSize: 2048)
        metadata()
    }
}

El esquema que se genera se ve así:

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| url         | longtext     | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| metadata     | bigint(20)   | YES  |     | NULL    |       |
| metadata_idx | varchar(255) | YES  |     | NULL    |       |
| metadata_elt | varchar(255) | NO   |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

Me pregunto cómo puedo especificar diferentes tipos (específicamente, tamaño diferente) para la tabla document_metadata. Me gustaría poder almacenar cuerdas de más de 255 caracteres. No pude encontrar ninguna documentación relevante en línea, posiblemente porque no se me ocurrió ninguna buena palabra clave. ¡El mapa y la colección son términos bastante genéricos!

Gracias,

Gene

¿Fue útil?

Solución

La única forma en que podrá influir en el DDL para sus "metadatos" es convertirlo en una clase de dominio concreto. Usar hashmap no te dará la capacidad de hacerlo.

Otros consejos

Sería bastante fácil ejecutar un comando SQL ALTER a la base de datos. Un buen lugar para este comando ALTER sería Bootstrap y con alguna lógica que verifique las definiciones de la columna de la tabla que están bien o no. Los gracios no tocarán las columnas ya creadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top