首页 文章

使用Grails'withCriteria函数与多对多关系重复的问题

提问于
浏览
4

我有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
}

我'm trying to get a list of Answers based on certain criteria. Here is my criteria query (using Grails' withCriteria 功能):

def listing = Answer.withCriteria {
    cache false
    order "id", "asc"

    eq("id", myAnswerID)

    questionAnswers {
        question {
            isNotNull("text")
        }
    }
}

这是我遇到的问题的一个例子:

我有一个符合3个不同问题的答案 . 我在"listing"中想要的是1 Answer 对象,其 questionAnswers 列表填充了3个匹配的 QuestionAnswer 对象 . 相反,我得到了3个相同的 Answer 对象,所有这些对象都填充了 questionAnswers 列表 .

有没有一种简单的方法来实现我想要的?我希望我只是错过了一些小事 .

任何帮助/建议都非常感谢 .

谢谢你,B.J .

1 回答

  • 6

    尝试将此添加到您的查询中,告诉Criteria仅返回不同的Answer对象:

    resultTransformer org.hibernate.Criteria.DISTINCT_ROOT_ENTITY
    

相关问题