Suite classe de domaine de Grails:Comment ajuster les contraintes/mapping DB pour carte dans Grails domaine classe
class MyClass {
Map myMap
}
maintenant pour myMap, Grails crée automatiquement une nouvelle table pour les éléments de la carte. Cependant, si j'ajoute des éléments qui sont trop longs (par exemple 1024 caractères), j'obtiens une erreur DB.
Puis-je dire en quelque sorte Grails de faire la colonne correspondante dans la table de myMap assez grand pour permettre de plus grandes chaînes, ou dois-je faire manuellement dans la base de données?
Je l'ai déjà essayé
static constraints = {
myMap(maxSize:1024)
}
qui ne fonctionne pas (comme prévu parce maxSize doit se référer aux valeurs de la carte et non à la carte elle-même).
Si non par des contraintes, peut-être il y a une façon de le faire via
?
Merci, c'est comme ça que je l'ai finalement fait. J'ai essayé d'écraser le setter de sorte que vous puissiez passer directement une Map en tant que paramètre, mais cela n'a pas fonctionné - par ex. public void setdynaProperties (Map map) {map.each {this.addToDynaProperties (nom: it.key.toString(), valeur: it.value.toString())}}. Au moins, cela n'a pas fonctionné avec le constructeur. –
Cool, je suis heureux que la solution globale a fonctionné pour vous. Je suis curieux de savoir quelle était l'erreur avec votre setter? Je sais que j'ai eu des problèmes avec essayer de "simuler" une propriété avec une signature de méthode typée et que si j'avais utilisé "def" (au lieu de "public void") cela avait tendance à marcher. Mais cela peut s'appliquer plus aux getters qu'aux setters. –