我们的应用程序在 weblogic 10g 上运行,并通过由默认 eclipselink 实现支持的 JPA 将数据持久化到 oracle 9 数据库中。
实体很简单:
@Entity
@Table(name="PLUGINDATA")
@SequenceGenerator(name="plugin_seq", sequenceName="PLUGINDATASEQ", initialValue = 1000, allocationSize = 50)
public class PluginData implements Serializable {
@Column(name = "data", length = 4000, nullable = false)
private String data;
@PersistenceContext(unitName = "XYZ")
protected javax.persistence.EntityManager entityManager;
entityManager.persist(entity);
当我传递包含重音字符的字符串时,它们在 EJB 中是可以的:
83, 116, -59, -103, 101, 100, 111, -60, -115, 101, 115, 107, -61, -67, 32, 107, 114, 97, 106
但它们在数据库中存储已损坏:
83, 116, 63, 63, 101, 100, 111, -60, 63, 101, 115, 107, 63, 63, 32, 107, 114, 97, 106
例如,重音字符被问号替换:St??edo�?esk?? kraj
我不明白,代码没问题,数据源设置与其他正常工作的应用程序一样。任何的想法?
编辑1:
这是 SID NLS 设置(非常像另一个应用程序数据库)
select DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET', 'NLS_LANGUAGE', 'LANGUAGE', 'NLS_TERRITORY', 'TERRITORY') name, value
from v$nls_parameters
where parameter in ('NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY');
LANGUAGE ENGLISH
TERRITORY CZECH REPUBLIC
CHARACTER SET EE8ISO8859P2
编辑2:
WebLogic / 数据源
连接池选项卡具有以下属性:
URL: jdbc:oracle:thin:@hostname:1521:SID
Driver: oracle.jdbc.xa.client.OracleXADataSource
Oracle选项卡:一切都未选中