首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Hibernate准则按日期求和和分组

使用Hibernate准则按日期求和和分组
EN

Stack Overflow用户
提问于 2016-11-13 09:30:49
回答 1查看 710关注 0票数 0

我有以下示例帐户表:

代码语言:javascript
复制
id  amount  amountDate
1  2.2  2016-09-01
2  4.4  2016-09-02
...  ...  ...
31  1.1  2016-10-01
32  2.2  2016-10-2

我想用amountDate来和amount列组,以得到结果:

代码语言:javascript
复制
Amount  Amount_Month
6.6  2016-September
3.3  2016-October

(此结果必须显示在primefaces中)

这就是我要尝试的:

AccountDAO.java中,我有这两个函数:

代码语言:javascript
复制
public Double getTotalAmmount(){
         Session session = sessionFactory.openSession();
         Criteria cr = session.createCriteria(Account.class);
         cr.setProjection(Projections.sum("ammount"));
         List total = cr.list();
         session.close();

       return (Double)total.get(0);
   }

public List getD()
{
    Session session = sessionFactory.openSession();
    Criteria criteria = session.createCriteria(Account.class);
    ProjectionList projectionList = Projections.projectionList(); 
    projectionList.add(Projections.sqlGroupProjection("date(ammountDate) as amD", "amD", new String[] { "amD" }, new Type[] { StandardBasicTypes.DATE }));
    criteria.setProjection(projectionList);
    return criteria.list();
}

AccountBean.java

代码语言:javascript
复制
private Double totalAmmount;
private List<Account> total;

//with their setter and getter

    @PostConstruct
    public void onCreate(){ 
        loadAccounts();    
    }

    public void loadAccounts(){ 
        total = AccountDAO.getInstance().getD();
        totalAmmount = AccountDAO.getInstance().getTotalAmmount();
    }

这是primefaces:

代码语言:javascript
复制
<p:panel id="list" header="Accounts">
                        <h:form id="actores">
                            <p:dataTable 
                                value="#{accountBean.totalAmmount}" 
                                var="account" 
                                id="dataTable"
                                paginator="true" 
                                rows="12">

                                <p:column>
                                    <f:facet name="header">Sum_of_Ammount</f:facet>
                                    <h:outputText value="#{accountBean.totalAmmount}" />
                                </p:column>

                                <p:column>
                                    <f:facet name="header">Months</f:facet>
                                    <h:outputText value="#{accountBean.total}" />
                                </p:column>
                            </p:dataTable>
                        </h:form>
                    </p:panel>

但其结果是:

代码语言:javascript
复制
Sum_of_Ammount   Months

59.20000000000002  [[Ljava.lang.Object;@2093e746, 
                       [Ljava.lang.Object;@30890fe4, ...
EN

回答 1

Stack Overflow用户

发布于 2016-11-13 09:41:11

您要将列表返回到客户端视图。因此,它是不正确的显示。

代码语言:javascript
复制
private Double totalAmmount;
private List<Account> total;

//with their setter and getter

@PostConstruct
public void onCreate(){ 
    loadAccounts();    
}

public void loadAccounts(){ 
    total = AccountDAO.getInstance().getD(); // this is List.
    totalAmmount = AccountDAO.getInstance().getTotalAmmount();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40572393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档