【问题标题】:select with detachedCriteria and order by sum of different column使用 detachedCriteria 选择并按不同列的总和排序
【发布时间】:2013-01-07 15:12:30
【问题描述】:

我有这个简单的 MySQL 查询:

SELECT * from foo ORDER BY (col1+col2+col3) DESC;

col1+col2+col3 的结果是一个整数。

有没有办法通过 DetachedCriteria 使用 hibernate for spring 来做到这一点?

附:我对 DetachedCriteria 非常缺乏经验

谢谢

【问题讨论】:

    标签: hibernate detachedcriteria


    【解决方案1】:

    是的,有一种使用公式注释的方法。注释将放置在 Foo 类上。请注意,公式注释接受 sql 列名称而不是对象属性名称。

    @Formula("col1+col2+col3")
    private int calculatedValue;
    
    public int getCalculatedValue() {
        return calculatedValue;
    }
    
    public void setCalculatedValue(int calculatedValue) {
        this.calculatedValue = calculatedValue;
    }
    

    分离的查询如下所示。

    DetachedCriteria query = DetachedCriteria.forClass(Foo.class);
    query.addOrder(Order.desc("calculatedValue"));
    List<Foo> results = query.getExecutableCriteria(session).setMaxResults(100).list();
    

    【讨论】:

    • 感谢您的回答,但是休眠映射文件呢?我还应该在那里映射公式吗?如何 ?我试过你的代码,我得到一个“找不到属性异常”......缺少关于@Formula的休眠文档
    • 已解决...我没有在我的项目中使用注释,所以我刚刚在休眠映射文件中添加了公式...谢谢曼努埃尔
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2017-06-02
    • 2020-02-27
    相关资源
    最近更新 更多