Я получил только несколько значений столбца из таблицы. Поэтому я использовал Projections для достижения этого. Код работает, но я не думаю, что он эффективен.Список проекций спящего режима
Моя проблема была в том, что я использовал ProjectionsList &, а затем установил критерий.list в ArrayList - объект Bulletin равен 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;
мне просто нужно установить criteria.list в BulletinList (класс, который содержит список объектов Bulletin). Но когда я использую проекции, объект Bulletin имеет значение null.
Я также читал другой поток, чтобы использовать
setResultTransformer(Transformers.aliasToBean
Но это не работает, либо. Так может кто-то помочь в этом, как сделать код лучше.
Благодаря
Хариш
Большое спасибо за Ваш ответ. Как я уже сказал, мой код выше работает так, как ожидалось, но просто хотел узнать, эффективен ли он. И да, Projections.property() принимает аргумент String. Когда я попытался использовать ваш блок кода, я получаю эту ошибку: – Harry
Тип несоответствия: невозможно преобразовать из типа элемента Object в Object [] в строке для (Object [] row: rows). Что мне здесь не хватает? Пожалуйста, сообщите об этом. – Harry
Извините Хариш, мой первоначальный ответ был отформатирован неправильно, что сделало объявление строк неправильным. Он должен работать так, как сейчас. – carbontax