Grails/Hibernate-查询关联

Grails/Hibernate-查询关联,hibernate,grails,gorm,executequery,Hibernate,Grails,Gorm,Executequery,我正在努力处理Grails(Hibernate)查询 我有一个表(ExamLog),它跟踪每次在试题库中修改一个考试问题 ExamLog表具有以下属性:logId(PK)、exam(FK)、question(FK)、comments、oldMark、newMark、dateModified。 考试表具有以下属性:examId(PK)、questionsId(FK)、lastUsed、versionCode…等, “问题”表具有以下属性:问题ID(PK)、描述、困难级别、avgPassed等 我的

我正在努力处理Grails(Hibernate)查询

我有一个表(ExamLog),它跟踪每次在试题库中修改一个考试问题

ExamLog表具有以下属性:logId(PK)、exam(FK)、question(FK)、comments、oldMark、newMark、dateModified。 考试表具有以下属性:examId(PK)、questionsId(FK)、lastUsed、versionCode…等, “问题”表具有以下属性:问题ID(PK)、描述、困难级别、avgPassed等

我的域名如下所示:

  class ExamLog{
       Exams exam;
       Questions question;
       String comments;
       Integer oldMark;
       Integer newMark;
       String dateModified;

       static belongsTo = [exam: Exams, question: Questions]
  }


  class Exams{
       Question questions;
       Integer versionCode;
       Integer lastUsed;
  }


  class Questions{
       String description;
       Integer difficultyLevel;
       Boolean avgPassed;
  }
我试图为每次考试获取一个问题列表,其中avgPassed=false,这样我就可以计算出测试库中有多少问题没有通过

我看过StackOverflow的例子,但仍然有困难。这是我尝试过的方法,但无论哪种方法,我都没有得到正确的结果。 使用sql:

  ExamLog.executeQuery("Select exam_log.exam_id, count(avgPassed) from exam_log, question where exam_log.exam_id = question.exam_id group by(exam_log.exam_id");
使用Grails Hibernate标准:

  def outstanding = ExamLog.createCriteria().list{
     projections{
         exams{
             questions{
                 eq("avgPassed",false)
             }
         }
     }
 }

您真的这样命名变量
avgPassed>70
?我说不出话来……我认为他/她没有给它命名,因为我认为它甚至不会编译。你真的这样命名变量
avgPassed>70
?我说不出话来……我不认为他/她会说出这个名字,因为我认为这甚至不会被编译。