Problema com duplicatas usando a função withCriteria do Grails com um relacionamento muitos para muitos
Tenho duas tabelas, pergunta e resposta, com um relacionamento muitos-para-muitos (ou seja, as perguntas podem ter várias respostas e as respostas podem ser reutilizadas por várias perguntas). Para normalização, tenho uma tabela de referência cruzada entre eles, denominada Question_Answer, que possui um relacionamento muitos-para-um com as duas tabelas. Estas são suas definições de classe:
class Question {
int id
int text
static hasMany = [questionAnswers : QuestionAnswer]
}
class Answer {
int id
int text
static hasMany = [questionAnswers : QuestionAnswer]
}
class QuestionAnswer {
int id
Question question
Answer answer
}
Estou tentando obter uma lista de respostas com base em determinados critérios. Aqui está minha consulta de critérios (usando Grails 'withCriteria
função):
def listing = Answer.withCriteria {
cache false
order "id", "asc"
eq("id", myAnswerID)
questionAnswers {
question {
isNotNull("text")
}
}
}
Aqui está um exemplo do problema que estou tendo:
Tenho uma resposta que corresponde a 3 perguntas diferentes. O que eu quero na "listagem" é 1Answer
objeto, com seuquestionAnswers
lista preenchida com os 3 correspondentesQuestionAnswer
objetos. Em vez disso, estou recebendo 3 @ idênticAnswer
objetos, todos com seusquestionAnswers
listas preenchidas.
Existe uma maneira simples de conseguir o que eu quero? Espero estar perdendo algo pequeno.
ualquer ajuda / sugestão é muito apreciad
Obrigado, B.J.