我在JPA查询中遇到订单问题。查询很简单,并且在sql-client中按预期运行。问题是瑞典人物å,ä和ö(应按顺序排列)。通过JPA(Hibernate)运行查询时,å和ä的顺序错误(ä,å,ö)。
Oracle和HslqDB之间没有区别,我的本地Windows PC和测试环境中的Linux机器没有区别。
我尝试过标准的JPA查询,本机JPA查询,本机Hibernate查询和Hibernate标准API。在所有情况下,订单都是错误的。
有什么想法吗?
答案 0 :(得分:1)
您正在数据库世界中遇到所谓的“排序规则”。我知道Oracle支持许多不同的语言,然后将正确处理您的ORDER BY子句。
在oracle文档中查找有关Oracle NLS_SORT会话变量的可能值的信息。我找到了this
按如下方式设置排序规则:
ALTER SESSION SET NLS_SORT = SWEDISH
然后在oracle提示符下运行查询。如果您确保为每个连接设置此项,那么您应该没问题。
所以问题不在于JPA / Hibernate甚至是JDBC。
答案 1 :(得分:0)
你指定哪种休眠方言?这可能会有所不同。这是一个article,涉及相关问题(尽管是Mysql)。
答案 2 :(得分:0)
我正在使用带有dbcp池的JPA。
对我来说,可以使用JAVA_OPTS参数修改NLS_SORT" user.language"。
在我的环境中,值-Duser.language = pt解决了这个问题。