如何在Hibernate中使用Collat​​e进行法语字符集

时间:2014-07-18 08:13:00

标签: java sql oracle hibernate collate

您好我在使用以下查询时尝试在列名为per_va_first_name的视图上使用collat​​e:

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参数字符串

我是oracle和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 个答案:

答案 0 :(得分:-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')

Hibernate应该理解它,但是你已经失去了数据库的可移植性,因为这是Oracle特有的功能。