【问题标题】:How to build a query using Hibernate Criteria and Projections如何使用 Hibernate Criteria 和 Projections 构建查询
【发布时间】:2016-12-22 16:41:33
【问题描述】:

我想使用 Hibernate Projections 属性构建一个如下所示的查询。有人可以检查以下内容。我写过类似的java代码。

DetachedCriteria dCriteria = DetachedCriteria.forClass(FinancialYearQuater.class, "FinancialYearQuater");
        dCriteria.add(Restrictions.eq("FinancialYearQuater.finYear", year));
        dCriteria.addOrder(Order.asc("finYear"));
        dCriteria.setResultTransformer(Projections.distinct(Projections.property("id")));
        List<FinancialYearQuater> list = (List<FinancialYearQuater>) findAll(dCriteria);

这是 SQL 查询:

select
 distinct
        this_.FINY_NAME,
        this_.FINY_YEAR,
        this_.QTR_NAME,
        this_.QTR_NO,
        this_.QTR_PERIOD 
    from
        V_FINYR_QTR this_ 
    where
        this_.FINY_YEAR=2016
    order by
        this_.FINY_YEAR asc

【问题讨论】:

  • 我格式化了代码。添加了标签。编辑了问题的标题,以更好地解释问题的含义
  • 您面临的问题是什么?
  • 我没有遇到任何问题,但我的答案代码是否适合从表中获取不同的数据。我有点担心,如果表中的数据很大,它会很慢。如果我可以在那里改进,我正在寻找我的代码的替代品。

标签: java hibernate dao hibernate-criteria nhibernate-projections


【解决方案1】:

我写了下面的代码。这是获取不同数据的正确方法吗?

DetachedCriteria dCriteria = DetachedCriteria.forClass(FinancialYearQuater.class, "FinancialYearQuater");
        dCriteria.add(Restrictions.eq("FinancialYearQuater.finYear", year));
        ProjectionList projList = Projections.projectionList();
        projList.add(Projections.property("FinancialYearQuater.finYear"), "finYear");
        projList.add(Projections.property("FinancialYearQuater.finYearName"), "finYearName");
        projList.add(Projections.property("FinancialYearQuater.qtrNo"), "qtrNo");
        projList.add(Projections.property("FinancialYearQuater.qtrPeriod"), "qtrPeriod");
        dCriteria.setProjection(Projections.distinct(projList));
        dCriteria.addOrder(Order.asc("finYear"));
        List<FinancialYearQuater> list = (List<FinancialYearQuater>) findAll(dCriteria);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2011-07-08
    • 2022-01-15
    • 1970-01-01
    • 2014-10-08
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多