2012-02-25 19 views
6

ho lezione dominio del messaggio che viene utilizzato per inviare una e-mail al sito amministratoristringa in Grails troppo grande per il campo di database

class Message { 

    String name 
    String subject 
    String body 

} 

ho pensato stringa non avrebbe una dimensione massima, ma quando la gente mettere nei messaggi sono troppo grandi quindi vedo eccezioni nei miei file di registro. Per ora inserisco un vincolo per limitare la dimensione del messaggio a 250 ma non riesco a ingrandirlo altrimenti il ​​salvataggio fallisce. Sto usando PostgreSQL 9.1.1 e Grails 1.3.7. Qualcuno sa come risolvere questo problema?

risposta

8

È possibile specificare il tipo di dati utilizzando un vincolo:

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

Questo non ha funzionato. La colonna è stata generata come 'VARCHAR (250)' –

7

Aggiungi questo alla classe di dominio:

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

Impostazione type in constraints blocco non funziona. Fai invece quanto segue.

0

La dimensione massima di un VARCHAR è impostata nel database, Grails non ha voce in capitolo. Quello che puoi fare è dire a Grails ciò che ti serve, e genererà DDL che usa un clob invece di una stringa.

Modificare il mapping per la colonna per utilizzare il tipo: "testo", aggiungendo il valore maxSize desiderato nei vincoli. Grails scoprirà che dovrebbe impostare il tipo di dati della colonna su clob.

(Generalmente un campo di clob può contenere fino a 4 GB, anche se alcuni database consentono di modificarlo.)

Problemi correlati