No problem at all. :)
Here is a link to
the complete logfile of this query.
The generated SQL:
Code:
select lectureseq0_.id as id, lectureseq0_.subject_id as subject2_4_, lectureseq0_.lecturer_id as lecturer3_4_, lectureseq0_.course_id as course4_4_, lectureseq0_.questionnaire_template_id as question5_4_, lectureseq0_.location as location4_, lectureseq0_.start_date as start7_4_, lectureseq0_.end_date as end8_4_, lectureseq0_.questionnaires_published_date as question9_4_ from lecture_sequences lectureseq0_ inner join courses course1_ on lectureseq0_.course_id=course1_.id inner join users students2_ on course1_.id=students2_.course_id, subjects subject5_ where (students2_.username=? and (lectureseq0_.questionnaires_published_date is not null) and lectureseq0_.questionnaires_published_date<=? and not (exists (select surveypart3_.id from survey_participations surveypart3_, users student4_ where (surveypart3_.lecture_sequence_id=ls and student4_.username=? and surveypart3_.student_id=student4_.id))) and lectureseq0_.subject_id=subject5_.id) order by lectureseq0_.questionnaires_published_date ASC , subject5_.name ASC
HQL AST:Code:
\-[QUERY] CommonAST: 'query'
+-[SELECT_FROM] CommonAST: 'SELECT_FROM'
| +-[FROM] CommonAST: 'FROM'
| | +-[DOT] CommonAST: '.'
| | | +-[DOT] CommonAST: '.'
| | | | +-[DOT] CommonAST: '.'
| | | | | +-[IDENT] CommonAST: 'de'
| | | | | \-[IDENT] CommonAST: 'w3s'
| | | | \-[IDENT] CommonAST: 'persistence'
| | | \-[IDENT] CommonAST: 'LectureSequence'
| | +-[ALIAS] CommonAST: 'ls'
| | \-[JOIN] CommonAST: 'JOIN'
| | +-[DOT] CommonAST: '.'
| | | +-[DOT] CommonAST: '.'
| | | | +-[IDENT] CommonAST: 'ls'
| | | | \-[IDENT] CommonAST: 'course'
| | | \-[IDENT] CommonAST: 'students'
| | \-[ALIAS] CommonAST: 'studs'
| \-[SELECT] CommonAST: 'SELECT'
| \-[IDENT] CommonAST: 'ls'
+-[WHERE] CommonAST: 'WHERE'
| \-[AND] CommonAST: 'AND'
| +-[AND] CommonAST: 'AND'
| | +-[AND] CommonAST: 'AND'
| | | +-[EQ] CommonAST: '='
| | | | +-[DOT] CommonAST: '.'
| | | | | +-[IDENT] CommonAST: 'studs'
| | | | | \-[IDENT] CommonAST: 'username'
| | | | \-[COLON] CommonAST: ':'
| | | | \-[IDENT] CommonAST: 'username'
| | | \-[IS_NOT_NULL] CommonAST: 'is not null'
| | | \-[DOT] CommonAST: '.'
| | | +-[IDENT] CommonAST: 'ls'
| | | \-[IDENT] CommonAST: 'questionnairesPublishedDate'
| | \-[LE] CommonAST: '<='
| | +-[DOT] CommonAST: '.'
| | | +-[IDENT] CommonAST: 'ls'
| | | \-[IDENT] CommonAST: 'questionnairesPublishedDate'
| | \-[COLON] CommonAST: ':'
| | \-[IDENT] CommonAST: 'today'
| \-[NOT] CommonAST: 'not'
| \-[EXISTS] CommonAST: 'EXISTS'
| \-[QUERY] CommonAST: 'query'
| +-[SELECT_FROM] CommonAST: 'SELECT_FROM'
| | \-[FROM] CommonAST: 'FROM'
| | +-[DOT] CommonAST: '.'
| | | +-[DOT] CommonAST: '.'
| | | | +-[DOT] CommonAST: '.'
| | | | | +-[IDENT] CommonAST: 'de'
| | | | | \-[IDENT] CommonAST: 'w3s'
| | | | \-[IDENT] CommonAST: 'persistence'
| | | \-[IDENT] CommonAST: 'SurveyParticipation'
| | \-[ALIAS] CommonAST: 'sp'
| \-[WHERE] CommonAST: 'WHERE'
| \-[AND] CommonAST: 'AND'
| +-[EQ] CommonAST: '='
| | +-[DOT] CommonAST: '.'
| | | +-[IDENT] CommonAST: 'sp'
| | | \-[IDENT] CommonAST: 'lectureSequence'
| | \-[IDENT] CommonAST: 'ls'
| \-[EQ] CommonAST: '='
| +-[DOT] CommonAST: '.'
| | +-[DOT] CommonAST: '.'
| | | +-[IDENT] CommonAST: 'sp'
| | | \-[IDENT] CommonAST: 'student'
| | \-[IDENT] CommonAST: 'username'
| \-[COLON] CommonAST: ':'
| \-[IDENT] CommonAST: 'username'
\-[ORDER] CommonAST: 'ORDER'
+-[DOT] CommonAST: '.'
| +-[IDENT] CommonAST: 'ls'
| \-[IDENT] CommonAST: 'questionnairesPublishedDate'
+-[ASCENDING] CommonAST: 'ASC'
+-[DOT] CommonAST: '.'
| +-[DOT] CommonAST: '.'
| | +-[IDENT] CommonAST: 'ls'
| | \-[IDENT] CommonAST: 'subject'
| \-[IDENT] CommonAST: 'name'
\-[ASCENDING] CommonAST: 'ASC'
SQL AST:Code:
\-[SELECT] QueryNode: 'SELECT' querySpaces (courses,users,subjects,survey_participations,lecture_sequences)
+-[SELECT_CLAUSE] SelectClause: '{select clause}'
| +-[ALIAS_REF] IdentNode: 'lectureseq0_.id as id' {alias=ls, className=de.w3s.persistence.LectureSequence, tableAlias=lectureseq0_}
| \-[SQL_TOKEN] SqlFragment: 'lectureseq0_.subject_id as subject2_4_, lectureseq0_.lecturer_id as lecturer3_4_, lectureseq0_.course_id as course4_4_, lectureseq0_.questionnaire_template_id as question5_4_, lectureseq0_.location as location4_, lectureseq0_.start_date as start7_4_, lectureseq0_.end_date as end8_4_, lectureseq0_.questionnaires_published_date as question9_4_'
+-[FROM] FromClause: 'FROM' FromClause{FROM}
| +-[FROM_FRAGMENT] FromElement: 'lecture_sequences lectureseq0_' FromElement{explicit,not a collection join,classAlias=ls,role=null,tableName=lecture_sequences,tableAlias=lectureseq0_,colums={,className=de.w3s.persistence.LectureSequence}}
| | \-[JOIN_FRAGMENT] ImpliedFromElement: 'inner join courses course1_ on lectureseq0_.course_id=course1_.id' ImpliedFromElement{implied in FROM clause,not a collection join,classAlias=null,role=null,tableName=courses,tableAlias=course1_,colums={lectureseq0_.course_id ,className=de.w3s.persistence.Course}}
| | \-[JOIN_FRAGMENT] FromElement: 'inner join users students2_ on course1_.id=students2_.course_id' FromElement{explicit,not a collection join,classAlias=studs,role=de.w3s.persistence.Course.students,tableName=users,tableAlias=students2_,colums={course1_.id ,className=de.w3s.persistence.Student}}
| \-[FROM_FRAGMENT] ImpliedFromElement: 'subjects subject5_' ImpliedFromElement{implied,not a collection join,classAlias=null,role=null,tableName=subjects,tableAlias=subject5_,colums={lectureseq0_.subject_id ,className=de.w3s.persistence.Subject}}
+-[WHERE] SqlNode: 'WHERE'
| +-[AND] SqlNode: 'AND'
| | +-[AND] SqlNode: 'AND'
| | | +-[AND] SqlNode: 'AND'
| | | | +-[EQ] SqlNode: '='
| | | | | +-[DOT] DotNode: 'students2_.username' {propertyName=username,dereferenceType=4,propertyPath=username,path=studs.username,tableAlias=students2_,className=de.w3s.persistence.Student,classAlias=studs}
| | | | | | +-[ALIAS_REF] IdentNode: 'students2_.id' {alias=studs, className=de.w3s.persistence.Student, tableAlias=students2_}
| | | | | | \-[IDENT] IdentNode: 'username' {originalText=username}
| | | | | \-[NAMED_PARAM] SqlNode: '?'
| | | | \-[IS_NOT_NULL] SqlNode: 'is not null'
| | | | \-[DOT] DotNode: 'lectureseq0_.questionnaires_published_date' {propertyName=questionnairesPublishedDate,dereferenceType=4,propertyPath=questionnairesPublishedDate,path=ls.questionnairesPublishedDate,tableAlias=lectureseq0_,className=de.w3s.persistence.LectureSequence,classAlias=ls}
| | | | +-[ALIAS_REF] IdentNode: 'lectureseq0_.id' {alias=ls, className=de.w3s.persistence.LectureSequence, tableAlias=lectureseq0_}
| | | | \-[IDENT] IdentNode: 'questionnairesPublishedDate' {originalText=questionnairesPublishedDate}
| | | \-[LE] SqlNode: '<='
| | | +-[DOT] DotNode: 'lectureseq0_.questionnaires_published_date' {propertyName=questionnairesPublishedDate,dereferenceType=4,propertyPath=questionnairesPublishedDate,path=ls.questionnairesPublishedDate,tableAlias=lectureseq0_,className=de.w3s.persistence.LectureSequence,classAlias=ls}
| | | | +-[ALIAS_REF] IdentNode: 'lectureseq0_.id' {alias=ls, className=de.w3s.persistence.LectureSequence, tableAlias=lectureseq0_}
| | | | \-[IDENT] IdentNode: 'questionnairesPublishedDate' {originalText=questionnairesPublishedDate}
| | | \-[NAMED_PARAM] SqlNode: '?'
| | \-[NOT] SqlNode: 'not'
| | \-[EXISTS] SqlNode: 'EXISTS'
| | \-[SELECT] QueryNode: 'SELECT' querySpaces (courses,users,subjects,survey_participations,lecture_sequences)
| | +-[SELECT_CLAUSE] SelectClause: '{derived select clause}'
| | | \-[SELECT_EXPR] SelectExpressionImpl: 'surveypart3_.id' {FromElement{explicit,not a collection join,classAlias=sp,role=null,tableName=survey_participations,tableAlias=surveypart3_,colums={,className=de.w3s.persistence.SurveyParticipation}}}
| | +-[FROM] FromClause: 'FROM' FromClause{FROM}
| | | +-[FROM_FRAGMENT] FromElement: 'survey_participations surveypart3_' FromElement{explicit,not a collection join,classAlias=sp,role=null,tableName=survey_participations,tableAlias=surveypart3_,colums={,className=de.w3s.persistence.SurveyParticipation}}
| | | \-[FROM_FRAGMENT] ImpliedFromElement: 'users student4_' ImpliedFromElement{implied,not a collection join,classAlias=null,role=null,tableName=users,tableAlias=student4_,colums={surveypart3_.student_id ,className=de.w3s.persistence.Student}}
| | \-[WHERE] SqlNode: 'WHERE'
| | +-[AND] SqlNode: 'AND'
| | | +-[EQ] SqlNode: '='
| | | | +-[DOT] DotNode: 'surveypart3_.lecture_sequence_id' {propertyName=lectureSequence,dereferenceType=ROOT_LEVEL,propertyPath=lectureSequence,path=sp.lectureSequence,tableAlias=surveypart3_,className=de.w3s.persistence.SurveyParticipation,classAlias=sp}
| | | | | +-[ALIAS_REF] IdentNode: 'surveypart3_.id' {alias=sp, className=de.w3s.persistence.SurveyParticipation, tableAlias=surveypart3_}
| | | | | \-[IDENT] IdentNode: 'lectureSequence' {originalText=lectureSequence}
| | | | \-[IDENT] IdentNode: 'ls' {originalText=ls}
| | | \-[EQ] SqlNode: '='
| | | +-[DOT] DotNode: 'student4_.username' {propertyName=username,dereferenceType=4,propertyPath=username,path=sp.student.username,tableAlias=student4_,className=de.w3s.persistence.Student,classAlias=null}
| | | | +-[DOT] DotNode: 'surveypart3_.student_id' {propertyName=student,dereferenceType=1,propertyPath=student,path=sp.student,tableAlias=student4_,className=de.w3s.persistence.Student,classAlias=null}
| | | | | +-[ALIAS_REF] IdentNode: 'surveypart3_.id' {alias=sp, className=de.w3s.persistence.SurveyParticipation, tableAlias=surveypart3_}
| | | | | \-[IDENT] IdentNode: 'student' {originalText=student}
| | | | \-[IDENT] IdentNode: 'username' {originalText=username}
| | | \-[NAMED_PARAM] SqlNode: '?'
| | \-[THETA_JOINS] SqlNode: '{theta joins}'
| | \-[SQL_TOKEN] SqlFragment: 'surveypart3_.student_id=student4_.id'
| \-[THETA_JOINS] SqlNode: '{theta joins}'
| \-[SQL_TOKEN] SqlFragment: 'lectureseq0_.subject_id=subject5_.id'
\-[ORDER] OrderByClause: 'ORDER'
+-[DOT] DotNode: 'lectureseq0_.questionnaires_published_date' {propertyName=questionnairesPublishedDate,dereferenceType=4,propertyPath=questionnairesPublishedDate,path=ls.questionnairesPublishedDate,tableAlias=lectureseq0_,className=de.w3s.persistence.LectureSequence,classAlias=ls}
| +-[ALIAS_REF] IdentNode: 'lectureseq0_.id' {alias=ls, className=de.w3s.persistence.LectureSequence, tableAlias=lectureseq0_}
| \-[IDENT] IdentNode: 'questionnairesPublishedDate' {originalText=questionnairesPublishedDate}
+-[ASCENDING] SqlNode: 'ASC'
+-[DOT] DotNode: 'subject5_.name' {propertyName=name,dereferenceType=4,propertyPath=name,path=ls.subject.name,tableAlias=subject5_,className=de.w3s.persistence.Subject,classAlias=null}
| +-[DOT] DotNode: 'lectureseq0_.subject_id' {propertyName=subject,dereferenceType=1,propertyPath=subject,path=ls.subject,tableAlias=subject5_,className=de.w3s.persistence.Subject,classAlias=null}
| | +-[ALIAS_REF] IdentNode: 'lectureseq0_.id' {alias=ls, className=de.w3s.persistence.LectureSequence, tableAlias=lectureseq0_}
| | \-[IDENT] IdentNode: 'subject' {originalText=subject}
| \-[IDENT] IdentNode: 'name' {originalText=name}
\-[ASCENDING] SqlNode: 'ASC'