Problema con duplicados usando la función Grails 'withCriteria con una relación de muchos a muchos
Tengo 2 tablas, Preguntas y respuestas, con una relación de muchos a muchos (es decir, las preguntas pueden tener múltiples respuestas y las respuestas pueden ser reutilizadas por múltiples preguntas). Para la normalización, tengo una tabla de referencia cruzada entre ellos llamada Question_Answer que tiene una relación de muchos a uno con ambas tablas. Estas son sus definiciones de clase:
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
}
Estoy tratando de obtener una lista de Respuestas basadas en ciertos criterios. Aquí está mi consulta de criterios (usando Grails 'withCriteria
función):
def listing = Answer.withCriteria {
cache false
order "id", "asc"
eq("id", myAnswerID)
questionAnswers {
question {
isNotNull("text")
}
}
}
Aquí hay un ejemplo del problema que estoy teniendo:
Tengo una respuesta que coincide con 3 preguntas diferentes. Lo que quiero en el "listado" es 1Answer
objeto, con suquestionAnswers
lista poblada con las 3 coincidenciasQuestionAnswer
objetos. En cambio, obtengo 3 @ idénticAnswer
objetos, todos con suquestionAnswers
listas pobladas.
¿Hay una manera simple de lograr lo que quiero? Espero estar perdiendo algo pequeño.
Cualquier ayuda / sugerencia es muy apreciada.
Gracias, B.J.