Hibernate'de bir tabloya yapılan sorgu sonucunu direkt olrak başka bir tabloya dönüştürme: ( Hibernate Transform Alias To Bean )
public List findTxnPerPCodes(String institutionId) {
try {
// Criteria oluşturuyoruz
Criteria c = getSession().createCriteria(Txn.class));
// Hibernate BUG: this. koymak gerekiyor. bkz:
// http://www.weask.us/entry/hibernate-query-projections
c.add(Restrictions.eq("this.institutionId", institutionId));
// Projection oluşturuyoruz
ProjectionList projList = Projections.projectionList();
// Group by özelliklerini veriyoruz
projList.add(Projections.groupProperty("institutionId"));
projList.add(Projections.groupProperty("timeDaily"));
projList.add(Projections.groupProperty("atmDim"));
projList.add(Projections.groupProperty("currencyDim"));
projList.add(Projections.groupProperty("pcode"));
// setResultTransformer'in TxnPerPCode icinde objeleri set
// edebilmesi icin alias veriyoruz
projList.add(Projections.property("institutionId"), "institutionId");
projList.add(Projections.property("timeDaily"), "timeDaily");
projList.add(Projections.property("atmDim"), "atmDim");
projList.add(Projections.property("currencyDim"), "currencyDim");
projList.add(Projections.property("pcode"), "pcode");
projList.add(Projections.count("id"), "txnCount");
projList.add(Projections.sum("amount"), "txnAmount");
// Criteria için projection set ediyoruz
c.setProjection(projList);
// Criteria sonucunu TxnPerPCode entity'lerine transform ediyoruz
c.setResultTransformer(Transformers.aliasToBean(TxnPerPCode.class));
return c.list();
} catch (HibernateException e) {
throw new DBInfrastructureException(e);
}
}
Hiç yorum yok:
Yorum Gönder