I need to get only a few column values ββfrom a table. So I used Projections to achieve this. The code works, but I do not think it is efficient.
My problem was that I used ProjectionsList and then set the .list criterion to ArrayList - the Bulletin object is null. I am not sure how to explain this. So I will put the code, and then please read below:
List<Bulletin> list = new ArrayList<Bulletin>(); BulletinList bulletinList = null; Criteria criteria = null; criteria = this.getSession().createCriteria(Bulletin.class) .setProjection(Projections.projectionList() .add(Projections.property(bulletinIdAttr)) .add(Projections.property(docNameAttr)) .add(Projections.property(docTypeCodeAttr)) ); criteria.addOrder(Order.desc(createdTimeAttr)); List<Object> rows = criteria.list(); for (Object r : rows) { Object[] row = (Object[]) r; Bulletin bull = new Bulletin(); bull.setBulletinId((Long) row[0]); bull.setDocumentName((String) row[1]); bull.setDocumentTypeCode((String) row[2]); list.add(bull); } bulletinList = new BulletinList(); bulletinList.setBulletins(list); return bulletinList;
I just need to set the .list criteria in a BulletinList (a class containing a list of Bulletin objects). But when I use projections, the Bulletin object is null.
I also read another thread to use
setResultTransformer(Transformers.aliasToBean
But that doesn't work either. So can someone help with this on how to make the code better.
thanks
Harish
Harry source share