我使用以下代码检索数据。
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
类型。所以我做了ncastchar的打字并使用了以下查询
String query = "SELECT cast(CLIENT_NAME as varchar(100)) FROM USER_TABLE WHERE USER_ID='10'";
它在两种环境下都能正常工作。但问题是它在生产环境中不显示某些字符(例如ű
显示为¿
)。我在后端使用oracle。在开发中我使用11g,在生产中它是10g。我认为它与版本有关。这个问题还有其他解决办法吗?
答案 0 :(得分:1)
您可能需要考虑更新版本的方言,如Oracle10gDialect,因为OracleDialect默认为版本8我相信。
另见:http://docs.oracle.com/cd/B19306_01/java.102/b14355/global.htm#CHDHHJDB
它有一些jdbc的额外配置。从10g开始,jdbc驱动程序没有完全支持nchar。