【问题标题】:Result for a projection's list with a hibernate criteria具有休眠条件的投影列表的结果
【发布时间】:2011-10-12 11:59:10
【问题描述】:

我正在使用带有预测的标准从我的数据库中提取 2 列。但是,我希望得到 2 个简单元素列表而不是 1 个元素列表的结果。

我的标准:

最终 DetachedCriteria 标准 = DetachedCriteria.forClass(Valeur.class, "value") .add(Restrictions.eq("value.parametre.id", parameterId)) (......更多限制......) 标准.setProjection(Projections.distinct(Projections.projectionList() .add(Projections.property("value.valeurVal")) .add(Projections.property("measure.mesureDate"))));

    criteria.addOrder( Order.asc("measure.mesureDate") );

final List<Data> result =  (List<Data>)  criteria.getExecutableCriteria(_sessionFactory.getCurrentSession()).list();

我的数据对象:

private double _value;
@NotNull
private Date _date;

在这种情况下,我有一个数据列表,但我想要两个列表:一个是双精度的,另一个是日期的。这可能吗 ?有什么想法吗?

非常感谢您的帮助。 凡妮莎

【问题讨论】:

    标签: hibernate criteria projection


    【解决方案1】:

    一旦你有了返回列表,你可以手动将它输出到两个列表中:

    List<String> stringList = new ArrayList<String>();
    List<Integer> integerList = new ArrayList<Integer>();
    results = criteria.list();
    if(results != null) {
        for (Object[] row : results) {
            stringList.add((String)row[0]);
            integerList.add((Integer)row[1]);
        }
    }
    

    【讨论】:

    • 非常感谢您的回答。但我仍然想知道是否可以直接使用 Hibernate 执行此操作,因为我正在处理大量数据(每列近 50 000 行),我更愿意避免循环“for”。谢谢你的帮助。凡妮莎
    • 基于 JavaDoc (docs.jboss.org/hibernate/core/3.5/javadocs/org/hibernate/…),您似乎只能在给定的 Criteria 查询上设置一个 ResultTransformer,因此答案似乎是否定的。
    • 非常感谢您的帮助,我将使用您的解决方案。祝你有美好的一天。凡妮莎
    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多