java - Mysql 5.5 与 hibernate 4 order by 不一致

标签 java mysql hibernate

我们使用 hibernate 4 和 mysql 5.5.x,并以 Innodb 作为默认引擎。我们有一个存储过程,它通过连接 View 和在存储过程内创建的临时 MYISAM 临时表来返回一些行。 使用 hibernate session 工厂、 session 和 ScrollableResultSet 调用存储过程。它返回对象数组的列表。 这是示例查询

SELECT 
col1, col2, col3, col4
FROM view1 v 
JOIN temptable1 t on t.id = v.id
ORDER BY intcol DESC, varcharcol

问题来了... 对于具有相同 intcol 值的行,varcharcol 上的辅助排序依据无法正常工作,它们会以困惑的顺序返回。

返回的示例行

Row1, 10, 'foo'
Row2 , 10, 'bar'
Row3, 10, 'foo'
Row4, 10, 'foo'
Row5, 10, 'bar'

有人遇到过类似的问题吗? 预先感谢您的回答。

最佳答案

是的,我发现了一些可以指导你的东西。

例如,您不能在 order by 子句中使用变量。您必须连接一个值并在后面使用连接后的值。

像这样:

$stid = oci_parse($conn, "SELECT X FROM BOOKS " . $orderby);

关于java - Mysql 5.5 与 hibernate 4 order by 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20734758/

相关文章:

java - 在Java中获取当前年份的整数值

java - 什么是IndexOutOfBoundsException?我该如何解决?

java - 用一个错误命名的字段使 MongoDB 崩溃,它有什么特别之处?

mysql - dbExpress 如何显示查询结果?

mysql - 如何映射 JPA 实体标识符以在 Oracle 和 MySQL 上工作

java - Google Drive API 未列出我的所有文件

php - 循环遍历 MySQL 结果循环

mysql - MySql 中 IF ELSE 内的 UPDATE 语句

java - Spring Boot + Hibernate - 如何维护 @Transient 字段

java.lang.NoClassDefFoundError : org/hibernate/cache/EntityRegion configuring EHCache