У меня есть 2 таблицы, Вопрос и Ответ, с отношением «многие ко многим» (т.е. Вопросы могут иметь несколько Ответов, а Ответы могут быть повторно использованы несколькими Вопросами). Для нормализации у меня есть таблица перекрестных ссылок между ними с именем Question_Answer, которая имеет отношение «многие к одному» с обеими таблицами. Это их определения классов:
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
}
Я пытаюсь получить список ответов на основе определенных критериев. Вот мой запрос критериев (используя функцию Grails 'withCriteria
):
def listing = Answer.withCriteria {
cache false
order "id", "asc"
eq("id", myAnswerID)
questionAnswers {
question {
isNotNull("text")
}
}
}
Вот пример проблемы, с которой я столкнулся:
У меня есть ответ, который соответствует 3 различным вопросам. То, что я хочу в «листинге», это 1 Answer
объект, с его списком questionAnswers
, заполненным 3 соответствующими QuestionAnswer
объектами. Вместо этого я получаю 3 идентичных объекта Answer
, каждый из которых заполнен списками questionAnswers
.
Есть ли простой способ добиться того, чего я хочу? Я надеюсь, что мне просто не хватает чего-то маленького.
Любая помощь / предложения приветствуются.
Спасибо,
B.J.