2012-12-13 4 views
5

내 현재 프로젝트에서 절전 기준 쿼리를 사용하여 엔터티를 가져 오는 문제에 직면했습니다. 학생들이 과제의 목록을 포함 최대 절전 기준 쿼리 여러 기준

  • 학생의 목록이 포함

    • 교수 : 나는 다음과 같은 요소를 가지고있다.
    • 할당 : 할당 된 학생의 ID를 포함합니다.

    이제 모든 교수 과제, 즉 교수가 학생에게 배정 된 모든 과제를 얻고 싶습니다.

    이 쿼리는 criteria 쿼리에서 구현하고 싶은 것을 보여줍니다.

    select * from Assigment p, Student a, Professor c where p.studentid = a.id and a.proffid = c.id and c.id = 2411; 
    

    최대 절전 모드 기준 API를 사용하여이 쿼리를 어떻게 구현할 수 있습니까?

  • 답변

    12

    은 같은 테이블을 가정 : 별칭을 사용하여

    @Entity 
    public class Professor{ 
        K id; 
        List<Student> students; 
    } 
    
    @Entity 
    public class Student{ 
        K profid; 
        List<Assignments> assignments; 
    } 
    
    @Entity 
    public class Assignments{ 
        K studentid; 
    } 
    

    간단한 샘플 :

    Criteria criteria = currentSession.createCriteria(Professor.class, "professor"); 
        criteria.createAlias("professor.students", "student"); 
        criteria.createAlias("student.assigments", "assigment"); 
        criteria.add(Restrictions.eqProperty("professor.id", "student.profid")); 
        criteria.add(Restrictions.eqProperty("assigment.studentid", "student.profid")); 
        criteria.add(Restrictions.eq("id", 2411)); 
    return criteria.list(); 
    
    +0

    답변 주셔서 감사 많은! –

    +0

    'professor.id'에 대한 'Restriction.eq'을 1234와 같게하려면 어떻게해야합니까? 즉 속성을'Long '에 직접 비교하려면 어떻게해야합니까? –

    +0

    @KevinMeredith Restrictions.eq ("professor.id", 1234L) – anubina