使用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
}

我正在尝试根据某些标准获取答案列表.这是我的标准查询(使用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

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...