使用JPA检索数据时出错:JDBC类型没有Dialect映射:-9

时间:2014-05-15 11:03:51

标签: oracle hibernate exception jpa jdbc

我使用以下代码检索数据。

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。我认为它与版本有关。这个问题还有其他解决办法吗?

1 个答案:

答案 0 :(得分:1)

您可能需要考虑更新版本的方言,如Oracle10gDialect,因为OracleDialect默认为版本8我相信。

另见:http://docs.oracle.com/cd/B19306_01/java.102/b14355/global.htm#CHDHHJDB

它有一些jdbc的额外配置。从10g开始,jdbc驱动程序没有完全支持nchar。