テーブルからいくつかの列の値だけを取得する必要がありました。だから私はこれを達成するためにプロジェクションを使用しました。コードは機能しますが、効果的だとは思いません。
私の問題は、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 (Bulletin オブジェクトのリストを保持するクラス) に設定するだけです。しかし、プロジェクションを使用すると、Bulletin オブジェクトが null になります。
私はまた、使用する別のスレッドを読んでいました
setResultTransformer(Transformers.aliasToBean
しかし、それもうまくいきません。コードをより良くする方法について、誰かがこれを手伝ってくれますか。
ありがとう
ハリッシュ