我需要从表中获取几个列的值。所以我使用了Projections来实现这一点。代码可以工作,但我认为它并不高效。
我的问题是当我使用ProjectionsList并将criteria.list设置为ArrayList时 - Bulletin对象为null。我不知道如何更好地解释这个问题。所以我将放置代码然后请您阅读下面的内容:
但这也不起作用。 所以,有人能帮助改进代码吗?
谢谢, 哈里什
我的问题是当我使用ProjectionsList并将criteria.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(保存了一系列公告对象的类)。但是当我使用投影时,公告对象会变成null。
我也在阅读另一个帖子,建议使用
setResultTransformer(Transformers.aliasToBean
但这也不起作用。 所以,有人能帮助改进代码吗?
谢谢, 哈里什