Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在PrimeFaces数据表中正确排序以特殊字符开头的字符串(如İ;、ı;、Ç;、ç;、Ğ;、ğ;、ş;、ö;、ü;…)?_Java_Hibernate - Fatal编程技术网

Java 如何在PrimeFaces数据表中正确排序以特殊字符开头的字符串(如İ;、ı;、Ç;、ç;、Ğ;、ğ;、ş;、ö;、ü;…)?

Java 如何在PrimeFaces数据表中正确排序以特殊字符开头的字符串(如İ;、ı;、Ç;、ç;、Ğ;、ğ;、ş;、ö;、ü;…)?,java,hibernate,Java,Hibernate,我们使用的是PrimeFaces 2.2(JavaEE5项目中的w/JSF2.x),尽管我们使用的是UTF-8,但在PrimeFaces数据表中,我们在正确排序以特殊字符开头的字符串(例如İstanbul、İankaya、Ödemiş…)时遇到了问题 问题是以特殊字符开头的单词被放在以Z开头的单词的末尾,而例如,以“İ”(即İstanbul)开头的城市名称通常应该出现在伊维萨和杰克逊维尔之间,而不是出现在苏黎世之后。此规则基于土耳其(tr_tr)地区 但是,在SelectOne菜单中,排序是正确

我们使用的是PrimeFaces 2.2(JavaEE5项目中的w/JSF2.x),尽管我们使用的是UTF-8,但在PrimeFaces数据表中,我们在正确排序以特殊字符开头的字符串(例如İstanbul、İankaya、Ödemiş…)时遇到了问题

问题是以特殊字符开头的单词被放在以Z开头的单词的末尾,而例如,以“İ”(即İstanbul)开头的城市名称通常应该出现在伊维萨和杰克逊维尔之间,而不是出现在苏黎世之后。此规则基于土耳其(tr_tr)地区

但是,在SelectOne菜单中,排序是正确执行的(并且如上所述)

如果您对解决方案有任何建议,我们将不胜感激

编辑


这个问题与基于hibernate(hsql)的排序有关,而不是基于sql的排序。这应该会有所帮助,在排序之前,所有内容都会转换为基本的大写/小写字符

select k from test order by convert(k using utf8_bin)

这应该会有所帮助,在排序之前,所有内容都会转换为基本的大写/小写字符

select k from test order by convert(k using utf8_bin)

除非知道单词的语言排序顺序,否则无法正确排序。如果单词是混合语言,则没有正确的排序顺序,但是在这种情况下,大多数用户/受众通常使用语言排序顺序

完全相同的字符,具有完全相同的发音和完全相同的Unicode代码点,将根据语言甚至国家在不同的地方排序


这是Unicode排序算法的定义,除非您知道单词的语言排序顺序,否则无法正确排序。如果单词是混合语言,则没有正确的排序顺序,但是在这种情况下,大多数用户/受众通常使用语言排序顺序

完全相同的字符,具有完全相同的发音和完全相同的Unicode代码点,将根据语言甚至国家在不同的地方排序


以下是Unicode排序算法的定义,区域设置感知排序是一项棘手的工作,因此最好使用专用库。我建议使用。我无法提供有关如何将其与hsql工作流集成的任何详细信息,因此如果这是一个选项,我可能会尝试单独排序。

区域设置感知排序是一项棘手的工作,因此最好使用专用库。我建议使用。我无法提供有关如何将其与hsql工作流集成的任何详细信息,因此如果这是一个选项,我可能会尝试单独排序。

语言为土耳其语,区域设置为“tr tr”,排序在selectOneMenu/f中正确完成:selectItems在同一页面上,但是p:dataTable无法正确排序。语言为土耳其语,区域设置为“tr tr”,并且在SelectOne菜单中正确排序/f:selectItems在同一页上,但是,p:dataTable无法正确排序。是否有一种方法可以在Hibernate中测试这一点,而不必执行本机SQL查询?simples方法应该是自定义比较器,并对结果执行Collection.sort。缺点是排序是在java中完成的,而不是在数据库级别。有没有办法在Hibernate中测试这一点,而不必执行本机SQL查询?simples方法应该是自定义比较器,并对结果执行Collection.sort。缺点是排序是在java中完成的,而不是在数据库级别。您找到解决此问题的方法了吗?我遇到了相同的问题。您是否找到解决此问题的方法?我也遇到过同样的问题。