2017-06-05 9 views
0

Ceci est dans le code 2.5.6 grails. J'ai une classe de domaine qui utilise l'héritage. L'une des sous-classes contient une liste de chaînes stockées dans la variable values. Lorsque vous appelez le .save(), la classe de domaine elle-même enregistre correctement avec le comportement d'héritage correct, mais les valeurs ne sont pas enregistrées. Voici mes classes de domaine:Grails Domain Class Liste de chaînes non persistante

abstract class Condition implements ICondition, IMarshaler { 
    String field; 
    static mapping = { 
     tablePerHierarchy false; 
    } 
    ... 
} 

class ListCondition extends Condition { 
    static hasMany = [values: String]; 
    List<String> values; 
    ... 
} 

tentez d'enregistrer une nouvelle condition de liste et l'obtenir à nouveau de la base de données montre qu'il n'y a pas de valeurs.

ListCondition condition = new ListCondition(field: 'someField', values: ['test', 'otherTest']) 
condition.save() 
println ListCondition.getAll()[0].values.size() // Prints 0 
+0

try condition.save (failOnError: true) qui vous donnera un stacktrace s'il y a une erreur – chim

Répondre

0

Trébuché sur un problème similaire. Essayez condition.save(flush: true) ou encore mieux essayez d'exécuter votre logique de persistance dans une transaction. Cela semble faire la différence et est considéré comme une bonne pratique de toute façon.