Example usage for org.hibernate.criterion Property in

List of usage examples for org.hibernate.criterion Property in

Introduction

In this page you can find the example usage for org.hibernate.criterion Property in.

Prototype

public Criterion in(DetachedCriteria subselect) 

Source Link

Document

Creates a sub-query IN expression for this property.

Usage

From source file:org.semtix.db.DBHandlerAntrag.java

License:Open Source License

/**
 * Liefert Liste mit allen Antrgen fr eine bestimmte Uni
 * zurck. Antrge haben selber kein Feld fr die Universitt,
 * so dass etwas aufwendig ber das Semester gesucht werden muss.
 *
 * @param uni Uni//from  www  . j av  a2 s.  c  o m
 * @return Liste mit Antrgen
 */
public List<Antrag> getAntragListeUni(Uni uni) {

    Session session = HibernateUtil.getSessionFactory().openSession();
    Criteria crit = session.createCriteria(Antrag.class);

    Property property = Property.forName("semesterID");
    List<Integer> ids = new ArrayList<>();
    for (Semester s : new DBHandlerSemester().getSemesterListe(uni)) {
        ids.add(s.getSemesterID());
    }
    crit.add(property.in(ids));

    crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    List<Antrag> result = crit.list();

    session.close();

    return result;

}

From source file:org.semtix.db.DBHandlerPerson.java

License:Open Source License

/**
 * Liefert eine Liste von Personen die seit i Semestern KEINEN Antrag gestellt haben. Wenn i==0, dann sind das Personen, die noch NIE einen Antrag gestellt haben.
 * @param i Wieviele Semester/*ww w.ja v a2s.c  om*/
 * @return Liste der Personen die in i Semestern KEINEN Antrag gestellt haben
 */
public List<Person> getListePersonenSeitSemesternOhneAntrag(int i) {

    //Letzte i Semester in einer Liste:
    Set<Integer> semesterIDs = bestimmeLetzteSemester(i);

    Session session = HibernateUtil.getSessionFactory().openSession();

    Criteria critAntrag = session.createCriteria(Antrag.class);

    if (null != semesterIDs && semesterIDs.size() > 0) {
        Property semesterId = Property.forName("semesterID");
        critAntrag.add(semesterId.in(semesterIDs));
    }

    //ntig weil sonst outer join doppelte resultate
    critAntrag.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    List<Antrag> antraegeDerSemester = critAntrag.list();

    //Personen und Antrge
    HashSet<Integer> personIds = new HashSet<>();
    for (Antrag a : antraegeDerSemester) {
        personIds.add(a.getPersonID());
    }

    //We are looking for persons that are not in the list:
    Criteria critPerson = session.createCriteria(Person.class);
    critPerson.add(Restrictions.eq("uni", UniConf.aktuelleUni));
    critPerson.add(Restrictions.not(Restrictions.in("personID", personIds)));
    critPerson.addOrder(Order.asc("nachname"));
    critAntrag.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    List<Person> personsNotInList = critPerson.list();

    session.close();

    return personsNotInList;

}