java - 使用具有多对多关系的 Grails 的 withCriteria 函数的重复问题

标签 java hibernate grails groovy

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

最佳答案

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

resultTransformer org.hibernate.Criteria.DISTINCT_ROOT_ENTITY

关于java - 使用具有多对多关系的 Grails 的 withCriteria 函数的重复问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181470/

相关文章:

java - 面试难题 - 为什么我们应该重写 hashCode 和 equals 方法

java - 测试Java代码时"Cannot find symbol"

java - @Value注释语法问题

java - Spring mvc + hibernate 上下文初始化失败 org.springframework.beans.factory.BeanCreationException : Error creating bean

java - 更改 Naturald 参数名称后出错

java - 在 JSPX 中创建自定义标签

java - UnsatisfiedDependencyException - 嵌套异常是 java.lang.NoClassDefFoundError : org/dom4j/io/STAXEventReader

mongodb - grails mongodb 3.0.2插件使用createCriteria()对关联进行联接查询

unit-testing - Grails测试中的模拟配置

mysql - GORM tablePerHierarchy false,外键