有沒有一種方法可以通過使用HQL或/和Criteria將ID轉換爲整數的子字符串?通過使用Grails的HQL整數ID的子字符串排序
例如:
class Foo {
String id
String name
}
排序數據集看起來像:
90-1 David
90-4 Mike
101-1 Jack
101-2 Peter
105-1 Jon
105-7 Jane
隨着MySQL數據庫和本地SQL它會像做:
order by
CAST(substring_index(id, '-', 1) AS UNSIGNED),
CAST(substring(id, length(substring_index(id, '-', 1)) + 2) AS UNSIGNED)
我試着用公式如建議,但沒有奏效,因爲UNSIGNED被視爲別名,生成的SQL有_this.UNSIGNED
Integer fooFirstID
Integer fooSecondID
static mapping = {
fooFirstID formula: "CAST(substring_index(id, '-', 1) AS UNSIGNED)"
fooSecondID formula: "CAST(substring(id, length(substring_index(id, '-', 1))
+ 2) AS UNSIGNED)"
}
我看到Hibernate支持子以及施放到Hibernate類型,但是找不到相當於SUBSTRING_INDEX的。
謝謝。
我不確定,但它可能是這種類型的東西(東西作爲類型)專有(我猜)功能的mysql不支持冬眠的mysql方言。嘗試聯繫郵件列表,看看它是一個錯誤還是遺漏的功能。 – 2012-03-01 23:37:27
它支持從我在這裏閱讀:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-expressions – Micor 2012-03-02 00:50:18
是有區別的簽名和無符號真正重要的這個案例?如果沒有,也許嘗試:'CAST(substring_index(id,' - ',1)AS整數)' – 2012-03-05 22:39:11