Java 带条件的Hibernate调用函数

Java 带条件的Hibernate调用函数,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我刚开始冬眠。 我想用条件调用我的自定义函数。 简单地说,我想这样调用函数: 从表中选择*,其中test=1订单由我自己的函数(arg1,arg2)asc执行 这个问题可以通过使用HQL解决。 但是我有很多可选条件,所以我必须动态附加条件 有没有办法解决这个问题?如果没有,你能告诉我其他方法吗?由于评论只支持一行,我将我的解决方案粘贴在这里, 1.扩展订单,链接是 } 使用公式将列添加到订单 嘿,你解决了吗?我有同样的问题。@Stony我用HQL而不是标准解决了这个问题。使用条件,似乎没有支持

我刚开始冬眠。
我想用条件调用我的自定义函数。
简单地说,我想这样调用函数:
从表中选择*,其中test=1订单由我自己的函数(arg1,arg2)asc执行

这个问题可以通过使用HQL解决。
但是我有很多可选条件,所以我必须动态附加条件

有没有办法解决这个问题?如果没有,你能告诉我其他方法吗?

由于评论只支持一行,我将我的解决方案粘贴在这里, 1.扩展订单,链接是

}

  • 使用公式将列添加到订单

  • 嘿,你解决了吗?我有同样的问题。@Stony我用HQL而不是标准解决了这个问题。使用条件,似乎没有支持的方法通过hibernate调用我自己的函数。非常感谢您的回复。我得到了两个使用标准的解决方案;1.延长订单;2.将列添加到订单的用户公式。
    package ro.tremend.util.hibernate;
    
    import org.hibernate.criterion.Order;
    import org.hibernate.criterion.CriteriaQuery;
    import org.hibernate.Criteria;
    import org.hibernate.HibernateException;
    
    /**
     * Extends {@link org.hibernate.criterion.Order} to allow ordering by an SQL formula      passed by the user.
     * Is simply appends the <code>sqlFormula</code> passed by the user to the resulting SQL query, without any verification.
     * @author Sorin Postelnicu
     * @since Jun 10, 2008
     */
      public class OrderBySqlFormula extends Order {
    private String sqlFormula;
    
    /**
     * Constructor for Order.
     * @param sqlFormula an SQL formula that will be appended to the resulting SQL query
     */
    protected OrderBySqlFormula(String sqlFormula) {
        super(sqlFormula, true);
        this.sqlFormula = sqlFormula;
    }
    
    public String toString() {
        return sqlFormula;
    }
    
    public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
        return sqlFormula;
    }
    
    /**
     * Custom order
     *
     * @param sqlFormula an SQL formula that will be appended to the resulting SQL query
     * @return Order
     */
    public static Order sqlFormula(String sqlFormula) {
        return new OrderBySqlFormula(sqlFormula);
    }