3
我在使用JPA將unicode字符存儲到Oracle 11g時遇到問題。 當我使用這個存儲一個unicode字符串到數據庫(someTranslation是一個包含unicode字符串的對象)。使用JPA在Oracle 11g中存儲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>
您的回覆@gerrytan謝謝,我已經選擇了正確的字符使用columnDefinition =「NVARCHAR2(2000)」鍵入NVARCHAR2,如果手動將其輸入到數據庫中,則顯示正確。問題似乎是從java存儲到oracle時數據已損壞。 – kftse
我注意到有一個警告,建議我使用OraclePreparedStatement.setFormOfUse(),但我不知道如何在JPA中使用它。 – kftse
你知道如何使用JPA的OraclePreparedStatement.setFormOfUse()嗎? –