1

我需要使用Java(hibernate 3.0 /jpa)在Oracle数据库中插入汉字,我尝试了很多方法都失败了。

当我坚持我在字段中看到 (??? ) 的实体时,当我检索该值时,我看到了相同的结果。

我的甲骨文NLS_DATABASE_PARAMETERS

NLS_CHARACTERSET   WE8MSWIN1252
NLS_NCHAR_CHARACTERSET  AL16UTF16 

列类型为 Nvarchar。我在 persistence.xml 中设置了这个属性

<property name="hibernate.connection.useUnicode" value="true"  />
<property name="hibernate.connection.characterEncoding" value="UTF-8"/>
<property name="hibernate.connection.charSet" value="UTF-8"/>
4

2 回答 2

2

如果您有机会,请将您的数据库从字符集 WE8MSWIN1252 转换为 AL32UTF8(这是新安装的 Oracle 的默认设置)。然后您的所有问题都将消失,您不需要使用有问题的数据类型,如 NCHAR 或 NVARCHAR 或任何特殊的连接设置。

于 2012-06-18T12:03:09.880 回答
1

我在 SQL Server 中遇到了同样的问题,我们通过将所有 varchar 字段转换为 nvarchar 来解决它。此外,所有相应的存储过程和返回类型都需要更改。确保所有程序也有 nvarchar 数据类型

于 2012-06-18T10:25:56.760 回答