ORACLE11g:No Dialect mapping for JDBC type: -9

用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>
1ARRAY2003
2BIGINT-5
3BINARY-2
4BIT-7
5BLOB2004
6BOOLEAN16
7CHAR1
8CLOB2005
9DATALINK70
10DATE91
11DECIMAL3
12DISTINCT2001
13DOUBLE8
14FLOAT6
15INTEGER4
16JAVA_OBJECT2000
17LONGNVARCHAR-16
18LONGVARBINARY-4
19LONGVARCHAR-1
20NCHAR-15
21NCLOB2011
22NULL0
23NUMERIC2
24NVARCHAR-9
25OTHER1111
26REAL7
27REF2006
28ROWID-8
29SMALLINT5
30SQLXML2009
31STRUCT2002
32TIME92
33TIMESTAMP93
34TINYINT-6
35VARBINARY-3
36VARCHAR 








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值