我使用以下代码来检索数据。
String query = "SELECT CLIENT_NAME FROM USER_TABLE WHERE USER_ID='10'";
Query qry = entityManager.createNativeQuery(query);
List<Object> data = null;
try {
data = query.getResultList();
} catch (Exception ex) {
LOGGER.error("Exception in Database data retrieval ", ex);
throw ex;
}
这段代码的问题是,它在我的开发环境中工作得很好,但在生产环境中就不行了。我得到了这样的异常
javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
我检查过了,然后发现,这是因为我的字段CLIENT_NAME的类型是nvarchar2
。因此,我进行了nvarchar类型转换,并使用了以下查询
String query = "SELECT cast(CLIENT_NAME as varchar(100)) FROM USER_TABLE WHERE USER_ID='10'";
它在两种环境下都能很好地工作。但问题是它不能在生产环境中显示某些字符(例如,ű
显示为¿
)。我在后端使用oracle。在这里,我在开发中使用11g,在生产中使用10g。我认为这与版本有关。这个问题有没有其他的修复方法?
发布于 2014-05-15 22:10:23
您可能想考虑更新版本的方言,如Oracle10gDialect,因为我相信OracleDialect默认使用版本8。
另请参阅:http://docs.oracle.com/cd/B19306_01/java.102/b14355/global.htm#CHDHHJDB
它为jdbc提供了一些额外的配置。从10g开始,jdbc驱动程序还没有完全支持nchar。
https://stackoverflow.com/questions/23676404
复制相似问题