如何使用Java在Oracle DB中插入中文字符

时间:2012-06-18 10:23:49

标签: java oracle hibernate jpa

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

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

我的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"/>

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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