2014-07-18 22 views
0

嗨,我试图用整理上有列名per_va_first_name一个观点,当我使用下面的查询:如何使用分页在Hibernate中为法国字符集

SELECT * 
FROM person_view 
WHERE NLSSORT(per_va_first_name, 'NLS_SORT = FRENCH_AI') = NLSSORT('mickaël', 'NLS_SORT =FRENCH_AI') 

我得到的错误

ORA-12702:在SQL函数中使用无效的NLS参数字符串

我是新来甲骨文,这nlssort。任何人都可以帮我指出我的错误是什么? 同时我想在Hibernate for Java中使用collat​​e。相同的法国字符集。

编辑:

当我使用SQL

alter session set nls_sort=French_AI; 
alter session set nls_comp=linguistic; 

当执行此查询

SELECT * FROM v_myuser_search_test_ea4 where per_va_first_name like 'Mickaël%' 

如何在Hibernate中做到这一点,我得到所需的输出这些命令?有没有一种方法,我可以追加“CI”到French_AI,使其“French_AI_CI”

回答

-1

据对http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions113.htm#SQLRF51562

找到Oracle文档,你可以查询更改为

SELECT * 
FROM person_view 
ORDER BY NLSORT(per_va_first_name, 'NLS_SORT = FRENCH_AI_CI') 

休眠应该明白但是,由于这是Oracle特定的功能,因此您已经在丢失数据库可移植性。

+0

我试过了,徒劳。它只给我一个名为“mickaël”的记录,而不是所有记录中的“mickael”。 Bdw我与French_CI_AI犯了错误。我不知道有什么问题,但支持French_AI或French_CI,但不支持。 –

+0

对不起,我不明白你最初的问题。你可以改变NLS_SORT和NLS_COMP的数据库级别的属性吗? –

+0

据我所知,Oracle JDBC驱动程序没有设置这些参数的选项,它使用底层虚拟机字符集和编码进行整理。我在Linux上与WebSphere应用服务器有类似的问题,与使用UTF-8的Oracle数据库交谈。直到我设置VM属性user.language和user.country(对于您的情况,它将是-Duser.language = fr -Duser.country = FR),调整程序才工作。 –

相关问题