错误记录: No Dialect mapping for JDBC type: 3

昨晚在使用getSession().createSQLQuery("select * from bbsuser").list();
时出现了错误:No Dialect mapping for JDBC type: 3;
baidu,google一下,发现出现这个原因是说服务器端的数据类型并不能和Java的BigDecimal数据类型成功映射。

解决方法:
1、新建一个YYMySQLDialect 继承于 org.hibernate.dialect.MySQLDialect(数据库是MYSQL)并在里面补充注册新的类型映射。
代码如下:

package com.yeyong.ah;

import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLDialect;

public class YYMySQLDialect extends MySQLDialect {
    public YYMySQLDialect () {
        super();
        registerHibernateType(Types.DECIMAL, Hibernate.BIG_INTEGER.getName());
    }
}

2、把Hibernate里的Dialect改成新的Dialect

<prop key="hibernate.dialect">com.yeyong.ah.YYMySQLDialect </prop>

在SQLServerDialect里的registerHibernateType函数,更详细的用法请看
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/dialect/Dialect.html#registerHibernateType%28int,%20int,%20java.lang.String%29%20

你可能感兴趣的:(java,Hibernate,mysql,jdbc,Google)