Hitesh
Hitesh

Reputation: 59

Duplicates in Criteria.list()

public List<String> listOfChunks() {
    Criteria criteria = getSession().createCriteria(Student.class);
        criteria.addOrder(Order.asc("id"));
        criteria.setProjection(Projections.sqlProjection("right(name,1) as lastChar", new String[]{"lastChar"}, new Type[]{ new StringType()}));
        return criteria.list();
    }

Above query is giving me last char of all the students name, how can i avoid duplicates in lastchar which I am getting in list() ?

Upvotes: 0

Views: 75

Answers (1)

Rohan
Rohan

Reputation: 3078

Use Projections.distinct which creates a distinct projection from a projection

Criteria criteria = getSession().createCriteria(Student.class);
        criteria.addOrder(Order.asc("id"));
        criteria.setProjection( Projections.distinct(
                                 Projections.sqlProjection("right(name,1) as lastChar"
                               , new String[]{"lastChar"}
                               , new Type[]{ new StringType()})));
        return criteria.list();

Upvotes: 1

Related Questions