Список проекций гибернации

Мне нужно было получить только несколько значений столбца из таблицы. Поэтому я использовал Projections для достижения этой цели. Код работает, но я не думаю, что он эффективен.

Моя проблема возникла, когда я использовал ProjectionsList, а затем задал критерии.list для ArrayList — объект бюллетеня имеет значение null. Я не уверен, как объяснить это лучше. Итак, я приведу код, а затем, пожалуйста, прочитайте ниже:

 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;

Мне просто нужно установить для критерия.list значение BulletinList (класс, который содержит список объектов Bulletin). Но когда я использую проекции, объект бюллетеня имеет значение null.

Я также читал другую ветку для использования

setResultTransformer(Transformers.aliasToBean

, но она тоже не работает. Так может кто-нибудь помочь в этом, как сделать код лучше.

Спасибо

Хариш

5
задан Harry 15 June 2012 в 19:42
поделиться