我有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个相同的答案对象,所有答案对象都填充了填充的问题答案列表.
有没有一种简单的方法来实现我想要的?我希望我只是错过了一些小事.
任何帮助/建议都非常感谢.
谢谢,
B.J.
解决方法:
尝试将此添加到您的查询中,告诉Criteria仅返回不同的Answer对象:
resultTransformer org.hibernate.Criteria.disTINCT_ROOT_ENTITY
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。