como vincular dados de parâmetros ao objeto de domínio que possui uma propriedade de lista/conjunto?
-
20-12-2019 - |
Pergunta
Estou intrigado com o comportamento que estou enfrentando com a vinculação de dados do Grails.Vou começar com o código do controlador
def saveQuestion(){
QuestionSurvey question = new QuestionSurvey();
bindData(question, params);
question.save();
}
Além disso, o domínio QuestionSurvey se parece com
class QuestionSurvey {
String questionText
QuestionTypeSurvey questionType
static hasMany = [options: QuestionOptionSurvey]
static mapping = {
questionType enumType: 'ordinal'
}
static constraints = {}
}
Além disso, o domínio QuestionOptionSurvey se parece com
class QuestionOptionSurvey {
String optionText
static belongsTo = [question: QuestionSurvey]
static constraints = { }
}
Acho que a ligação está funcionando para todas as propriedades, mas não para o campo "opções" no domínio QuestionSurvey.O erro que estou recebendo é
TypeMismatchException: Provided id of the wrong type for class QuestionOptionSurvey.
Expected class java.lang.Long got java.lang.String. So my question is how to get around
this problem of binding params to a domain that has a field of type set of another domain
class?
O params.options é uma lista de strings, por exemplo ['option1', 'option2', 'option2'].
Solução
Para vincular o options
propriedade/coleção corretamente, seus parâmetros devem ser postados com nomes de elementos como: options.optionText
.Caso contrário, esperaremos que você poste IDs e tente localizar o QuestionOptionSurvey
combinando esses IDs.