使用具有多对多关系的Grails’withCriteria函数重复的问题
我有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 }
我正在尝试根据某些标准获取答案列表。 这是我的标准查询(使用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
对象,所有Answer
对象都填充了填充的questionAnswers
Answer
列表。
有没有一种简单的方法来实现我想要的? 我希望我只是错过了一些小事。
任何帮助/建议都非常感谢。
谢谢,BJ
尝试将此添加到您的查询中,告诉Criteria仅返回不同的Answer对象:
resultTransformer org.hibernate.Criteria.DISTINCT_ROOT_ENTITY