我需要使用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"/>
答案 0 :(得分:2)
如果有机会,请将数据库从字符集WE8MSWIN1252转换为AL32UTF8(这是新Oracle安装的默认设置)。然后你的所有问题都将消失,你不需要使用有问题的数据类型,如NCHAR或NVARCHAR或任何特殊的连接设置。
答案 1 :(得分:1)
我在SQL服务器中遇到了同样的问题,我们通过将所有varchar字段转换为nvarchar来解决它。还需要更改所有相应的存储过程和返回类型。确保所有过程都具有nvarchar数据类型