0
我是新來的休眠。
我想用標準調用我的自定義函數。
簡單地說,我想調用像這樣的函數:
SELECT * FROM table WHERE test=1 ORDER BY my_own_function(arg1, arg2) asc
這個問題可以通過使用HQL來解決。
但我有很多可選的條件,所以我必須動態追加條件。
有沒有辦法解決這個問題?如果沒有,你能告訴我其他方法嗎?帶條件的休眠呼叫功能
我是新來的休眠。
我想用標準調用我的自定義函數。
簡單地說,我想調用像這樣的函數:
SELECT * FROM table WHERE test=1 ORDER BY my_own_function(arg1, arg2) asc
這個問題可以通過使用HQL來解決。
但我有很多可選的條件,所以我必須動態追加條件。
有沒有辦法解決這個問題?如果沒有,你能告訴我其他方法嗎?帶條件的休眠呼叫功能
由於評論只支持一條線,我貼我的解決方案在這裏, 1.擴展秩序,鏈接extend Order
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);
}
}
嘿,你解決了嗎?我也有同樣的問題。 – Stony
@Stony我已經通過使用HQL解決了它,而不是標準。使用標準,似乎沒有支持的方式來通過休眠調用我自己的函數。 –
非常感謝您的回覆。我有兩個使用Criteria的解決方案;延長訂單; 2.用戶公式添加一列來訂購。 – Stony