ORACLE11g:No Dialect mapping for JDBC type: -9
阿新 • • 發佈:2018-11-20
用Hibernate原生sql查詢資料,sql中含有unistr() 函式,報錯:ORACLE11g:No Dialect mapping for JDBC type: -9;
第一步 : 寫一個自定義的方言類,該類繼承原來的oracle10gDialect,並註冊缺少的型別和方法;
package phis.source.dialect; import java.sql.Types; import org.hibernate.dialect.Oracle10gDialect; import org.hibernate.dialect.function.SQLFunctionTemplate; import org.hibernate.type.StandardBasicTypes; public class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); registerHibernateType(Types.CHAR, StandardBasicTypes.STRING.getName()); registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName()); registerHibernateType(Types.LONGNVARCHAR, StandardBasicTypes.STRING.getName()); registerHibernateType(Types.DECIMAL, StandardBasicTypes.DOUBLE.getName()); registerHibernateType(Types.NCLOB, StandardBasicTypes.STRING.getName()); registerFunction( "date", new SQLFunctionTemplate(StandardBasicTypes.DATE, "to_date(?1,'yyyy-MM-dd')") ); registerFunction( "sum_day", new SQLFunctionTemplate(StandardBasicTypes.DATE, "?1") ); registerFunction( "sum_day2", new SQLFunctionTemplate(StandardBasicTypes.DATE, "?1+?2")); registerFunction( "sum_month", new SQLFunctionTemplate(StandardBasicTypes.DATE, "add_months(?1,?2)") ); } }
更改hibernate資料庫配置檔案,將資料庫方言改為剛才自定義的方言類 <prop key="hibernate.dialect">phis.source.dialect.MyOracleDialect</prop>
1 | ARRAY | 2003 |
2 | BIGINT | -5 |
3 | BINARY | -2 |
4 | BIT | -7 |
5 | BLOB | 2004 |
6 | BOOLEAN | 16 |
7 | CHAR | 1 |
8 | CLOB | 2005 |
9 | DATALINK | 70 |
10 | DATE | 91 |
11 | DECIMAL | 3 |
12 | DISTINCT | 2001 |
13 | DOUBLE | 8 |
14 | FLOAT | 6 |
15 | INTEGER | 4 |
16 | JAVA_OBJECT | 2000 |
17 | LONGNVARCHAR | -16 |
18 | LONGVARBINARY | -4 |
19 | LONGVARCHAR | -1 |
20 | NCHAR | -15 |
21 | NCLOB | 2011 |
22 | NULL | 0 |
23 | NUMERIC | 2 |
24 | NVARCHAR | -9 |
25 | OTHER | 1111 |
26 | REAL | 7 |
27 | REF | 2006 |
28 | ROWID | -8 |
29 | SMALLINT | 5 |
30 | SQLXML | 2009 |
31 | STRUCT | 2002 |
32 | TIME | 92 |
33 | TIMESTAMP | 93 |
34 | TINYINT | -6 |
35 | VARBINARY | -3 |
36 | VARCHAR |