package fr.mcc.ginco.dao.hibernate; import java.util.List; import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.hibernate.sql.JoinType; import org.hibernate.transform.Transformers; import org.springframework.stereotype.Repository; import fr.mcc.ginco.beans.Thesaurus; import fr.mcc.ginco.beans.ThesaurusOrganization; import fr.mcc.ginco.dao.IThesaurusOrganizationDAO; /** * DAO for Thesaurus organization */ @Repository public class ThesaurusOrganizationDAO extends GenericHibernateDAO<ThesaurusOrganization, Integer> implements IThesaurusOrganizationDAO { public ThesaurusOrganizationDAO() { super(ThesaurusOrganization.class); } @Override public List<ThesaurusOrganization> getFilteredOrganizationNames() { Criteria criteria = getCurrentSession().createCriteria(Thesaurus.class, "t") .add(Restrictions.isNotNull("t.creator")) .createCriteria("creator", "c", JoinType.RIGHT_OUTER_JOIN) .setProjection( Projections.distinct(Projections.projectionList().add( Projections.property("c.name").as("name")))) .setResultTransformer(Transformers.aliasToBean(ThesaurusOrganization.class)) .addOrder(Order.asc("name")); return criteria.list(); } }