有没有一种方法可以通过使用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