我有一個名爲SaleRecord與領域,如休眠條件查詢與GROUP BY和aliasToBean
@Entity
public class SaleRecord {
private Long id;
private String type;
private Double amount;
//Getter and Setter and more fields
}
我想寫下面使用的查詢條件
SELECT s.type AS accountName, SUM(s.amount) AS amount
FROM salerecord s
GROUP BY s.type
我一直在使用純SQL編寫的表/實體在休眠狀態下(其工作)
String sql = " SELECT s.type AS accountName, SUM(s.amount) AS amount ";
sql += " FROM salerecord s ";
sql += " GROUP BY s.type ";
List<CollectionDO> incomeList = (List<CollectionDO>) getSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(CollectionDO.class)).list();
CollectionDO是另一個POJO類,我想要t填充結果。
但是想使用條件編寫,那麼如何編寫這個查詢並將結果轉換爲CollectionDO類。 我曾嘗試以下,但不工作
Criteria criteria = getSession().createCriteria(SaleRecord.class).setResultTransformer(Transformers.aliasToBean(CollectionDO.class));
criteria.setProjection(Projections.property("type"));
criteria.setProjection(Projections.sum("amount"));
criteria.setProjection(Projections.groupProperty("type"));
return (List<CollectionDO>) criteria.list();
CollectionDO.java
public class CollectionDO {
private Double amount;
private String accountName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public Double getAmount() {
return amount;
}
public void setAmount(Double amount) {
this.amount = amount;
}
}
哪些呢這意味着不工作?拋出一些錯誤? – Vikdor
否。沒有例外,但結果列表爲null。我認爲它無法進行轉換。因爲在條件列名稱是「類型」,但CollectionDO.java有字段爲「accountName」 –