gpt4 book ai didi

jpa - 在 Oracle 11g 中使用 JPA 存储 unicode 字符

转载 作者:行者123 更新时间:2023-12-02 01:59:42 25 4
gpt4 key购买 nike

我在使用 JPA 将 unicode 字符存储到 Oracle 11g 时遇到问题。当我使用这个将 unicode 字符串存储到 DB 时(someTranslation 是一个包含 unicode 字符串的对象)。

someTranslation.setMessage("文字"); //literally means characters
em.persist(someTranslation);

然后字符串显示为倒置的“?” ("¿​​")

当我使用 SQLDeveloper 手动修复数据库中损坏的字符串时,字符会按预期正确显示。

我搜索了一下 using MySQL , 只需要一个小的修改就可以纠正这个问题。我觉得我在那个帖子中遇到了同样的问题,只是我使用的是 oracle 11g。有谁知道 oracle 11g 中这个问题的解决方案?提前致谢。

这是我的 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="cbpejb" transaction-type="JTA">
<class>entity.Translation</class>
<properties>
<property name="openjpa.ConnectionDriverName" value="oracle.jdbc.OracleDriver" />
<property name="openjpa.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:orcldb" />
<property name="openjpa.ConnectionUserName" value="dev" />
<property name="openjpa.ConnectionPassword" value="dev00" />
<property name="openjpa.jdbc.Schema" value="DEV" />
</properties>
</persistence-unit>

最佳答案

有两个可能的问题:

  1. 您选择了错误的数据库列类型(例如:数据库列/配置不支持多字节字符)。在 Oracle 中,您需要 use NCHAR / NVARCHAR
  2. 您选择了正确的列类型,但没有正确显示

对于 Java 本身,String 类支持 Unicode,并使用 UTF-16 编码,但是您的 JDBC 驱动程序应该处理编码/解码

关于jpa - 在 Oracle 11g 中使用 JPA 存储 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com