分享

mysql的text如何dialect mapping

 rui5327 2012-07-04

在开发项目中,遇到了hibernate 的2个bug。导致出现了一些麻烦。
1、hibernate中对于数据库的Text数据类型不支持。
   hibernate 使用 hql查询包含text类型字段的时候很好。如果使用native sql 也就是使用  createSQLQuery方法查询text类型的时候总是报错:
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
        at org.hibernate.dialect.TypeNames.get(TypeNames.java :56)
是hibernate与mysql的jdbc驱动配合上出现了问题:对于 mysql text类型 jdbc   ResultSetMetaData.getColumnType  返回 -1  ,而 hibernate没有注册该类型,所以导致createSQLQuery 报 No Dialect mapping for JDBC type: -1。

解决这个问题:要么使用hql,不使用sql,

要么继承 MySQL5Dialect  类重写方法  
import java.sql.Types;  
import org.hibernate.Hibernate;  
import org.hibernate.dialect.MySQLInnoDBDialect;

public class MySqlDialectOverride extends MySQLInnoDBDialect {
 public MySqlDialectOverride() {  
        super();  
        registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());  
        registerHibernateType(-1, Hibernate.STRING.getName());  
   
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多