2013-10-17 14 views
5

So che è possibile impostare vincoli predefiniti tramite la proprietà grails.gorm.default.constraints config nome alla:Impostazione della lunghezza massima predefinita per Grails String GORM?

grails.gorm.default.constraints = { 
    '*'(nullable:true) 
} 

, ma c'è un modo per impostare per tipo? Voglio impostare come predefinite tutte le stringhe su maxSize: 2000 (principalmente per forzare il mapping predefinito di db a non essere varchar (255))

risposta

3

Non credo che ci sia un modo per farlo facilmente in Config.groovy. Puoi creare un dialetto personalizzato per la sospensione senza troppi problemi. Per esempio (usando il dialetto Postgres):

package mypackage; 

import org.hibernate.dialect.PostgreSQLDialect; 
import java.sql.Types; 

public MyPostgresDialect extends PostgresSQLDialect { 
    public MyPostgresDialect() { 
     super(); 
     registerColumnType(Types.VARCHAR, "text"); 
    } 
} 

Quindi aggiornare DataSource.groovy per utilizzare il nuovo dialetto:

datasource { 
    ... 
    dialect = mypackage.MyPostgresDialect 
} 
+0

Questa è davvero una buona idea - I non avevo pensato a quell'intero approccio. Ho appena pensato che l'associazione automatica di un tipo di dati illimitato (ad es. Stringa) a un tipo limitato molto breve (varchar (255)) sia una fonte di problemi. Diamine - dato che praticamente tutti i database moderni ora sono molto più intelligenti (usa solo ciò che è necessario) - Sono sorpreso che i varchar abbiano dei limiti - perché non fare un limite superiore di un valore molto alto (ad es. 8k, 32k, ecc.), e usare i limiti se necessario per limitarlo artificialmente ... ma sono solo i miei pensieri serpeggianti ... –

2

solo per fornire una risposta ulteriore che ho ricevuto da un collega di lavoro - che non era applicabile in questo caso, ma potrebbe aiutare gli altri ...

se è possibile seguire una convenzione di denominazione nelle proprietà, allora si potrebbe fare una:

'*_s': (maxSize:2000) 

Personalmente non mi piace il cross-leging di nomi e tipi di dati - ma volevo includere questo come approccio (anche se mi piace la risposta dialettale di ataylor di più ...)

Problemi correlati