Dans une classe de domaine GRAVES, comment définir la contrainte pour un champ de chaîne afin que son type de colonne MySQL soit du texte ou de la longueur?
Jusqu'à présent, ma meilleure approche est de définir la taille de la contrainte:
myTextField(size:0..65535)
qui résulte en texte
myTextField(size:0..2147483646)
résultats à longtext (2147483646 = 2 ^ 32/2 - 1 - 1)
Y a-t-il un moyen plus propre de spécifier la taille? Fondamentalement, je souhaite la gamme complète de texte ou à longtext sans avoir à corriger un tas de valeurs de taille.
Vous pouvez déclarer que dans la fermeture de mappage de votre classe de domaine:
static mapping = {
myTextField type: 'text'
}
(Voir Documentation DSL ORM )
l'utilisation de SQLTYPE vous permettrait d'aller pour une contrainte de grain fin.
Class Foo{
String myTxtAsVarchar
String myTxtAsText
String myTxtAsLtext
static mapping = {
myTxtAsVarchar sqlType: 'varchar(255)'
myTxtAsText sqlType: 'text'
myTxtAsLtext sqlType: 'longText'
}
/*applying constraint on DB end + on Domain model(scaffolding/Validation)*/
static constraints = {
myTxtAsVarchar size: 2..255
myTxtAsText size: 2..15000
}
}
l'utilisation de type SQL a également mis à disposition le type de blob réel (type d'octet lié à TinyBlob par défaut)
plus de mappage détaillé ici: https://grails.github.io/gails-doc/latest/ref/database%20Mapping/column.html