JPA Order By和瑞典字符的问题

时间:2010-02-23 09:18:35

标签: jpa

我在JPA查询中遇到订单问题。查询很简单,并且在sql-client中按预期运行。问题是瑞典人物å,ä和ö(应按顺序排列)。通过JPA(Hibernate)运行查询时,å和ä的顺序错误(ä,å,ö)。

Oracle和HslqDB之间没有区别,我的本地Windows PC和测试环境中的Linux机器没有区别。

我尝试过标准的JPA查询,本机JPA查询,本机Hibernate查询和Hibernate标准API。在所有情况下,订单都是错误的。

有什么想法吗?

3 个答案:

答案 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解决了这个问题。