2012-02-25 19 views
6

tengo clase dominio de mensajes que se utiliza para enviar un correo electrónico a administradores del sitiopara cuerdas en Grails demasiado grande para el campo de la base de datos

class Message { 

    String name 
    String subject 
    String body 

} 

pensé cadena no tendría un tamaño máximo, pero cuando la gente pone en los mensajes que son demasiado grandes, entonces veo excepciones en mis archivos de registro. Por ahora puse una restricción para limitar el tamaño del mensaje a 250, pero no puedo hacerlo más grande o de lo contrario, el guardado falla. Estoy usando PostgreSQL 9.1.1 y Grails 1.3.7. ¿Alguien sabe una manera de arreglar esto?

Respuesta

8

Se puede especificar el tipo de datos utilizando una restricción:

static constraints = { 
    body type:'text' 
} 
+0

Esto no funcionó. La columna se generó como 'VARCHAR (250)' –

7

Agregar a su dominio de clase:

static constraints = { 
    body(maxSize:1000) 
} 
0

Configuración type en constraints bloque no funciona. Haz lo siguiente en su lugar.

static mapping = { 
    body type: 'text' 
} 
0

El tamaño máximo de un VARCHAR se establece en la base de datos, Grails no tiene voz ni voto en la materia. Lo que puedes hacer es decirle a Grails lo que necesitas y generará DDL que usa un clob en lugar de una cadena.

Cambie la asignación de la columna para utilizar type: "text", mientras agrega el maxSize que desea en sus restricciones. Grails deducirá de esto que debe establecer el tipo de datos de columna para clob.

(Generalmente un campo CLOB que permite guardar hasta 4 GB, aunque algunas bases de datos que permiten cambiar.)

Cuestiones relacionadas