【问题标题】:hibernate Projections for spring boot application用于 Spring Boot 应用程序的休眠投影
【发布时间】:2017-01-24 06:38:13
【问题描述】:

我有一个包含以下字段的表

|id|feedback_status|financial_year|attendence|behaviour|total_feedback|user_id|total_behaviour|

我正在从该表中获取 feedback_status 和 total_feedback,并使用带有投影和投影列表的休眠作为 json 数据返回。

    List<StudentFeedback> results = null;

                Session session = getSession();
                Criteria criteria = session.createCriteria(StudentFeedback.class);

                ProjectionList projlist = Projections.projectionList();
                projlist.add(Projections.property("totalFeedback").as("qty"));
                projlist.add(Projections.groupProperty("feedbackStatus").as("feedName"));

                criteria.setProjection(projlist);
                criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                results = criteria.list();
}
    return GsonUtils.toGson(results);
    }

我的 feedback_status 和 total_feedback 包含以下值

|feedback_status|          |total_feedback |
    Excellent                   23
    Average                     11
    Poor                        12
    Good                        13
    Poor                        12

所以问题是每当返回 json 时,它会打印 feedback_statuspoor 两次,我希望只打印一次值,如果它多次出现然后求和total_feedback对应feedback_status,返回单一个。

【问题讨论】:

  • 您好兄弟,您可以尝试使用 .setProjection(Projections.countDistinct("feedback_status"));例如:Criteria criteria = createCriteria(values).setProjection(Projections.countDistinct("feedback_status"));
  • @PradeepCG 这有助于将结果打印为总反馈吗??
  • 嘿,您需要结合使用 sum 和 count 进行限制,请查看这些链接 stackoverflow.com/questions/23044565/… stackoverflow.com/questions/23044565/…

标签: java json postgresql hibernate


【解决方案1】:

我通过在hibernate porjections中使用groupProperty得到了答案

顺便感谢 Pradeep CG

List<StudentFeedback> results = null;

Session session = getSession();
Criteria criteria = session.createCriteria(StudentFeedback.class);

ProjectionList projlist = Projections.projectionList();
projlist.add(Projections.sum("totalFeedback").as("qty"));
projlist.add(Projections.groupProperty("feedbackStatus").as("feedName"));


criteria.setProjection(projlist);
criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
results = criteria.list();

return GsonUtils.toGson(results);

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 1970-01-01
    • 2021-02-22
    • 2011-04-11
    • 1970-01-01
    • 2015-07-17
    • 2020-06-08
    • 2013-05-31
    • 2012-11-26
    相关资源
    最近更新 更多