在开发项目中,遇到了hibernate
的2个bug。导致出现了一些麻烦。
1、hibernate中对于数据库的Text数据类型不支持。
hibernate 使用hql查询包含text类型字段的时候很好。如果使用native sql也就是使用 createSQLQuery方法查询text类型的时候总是报错:
org.hibernate.MappingException: No Dialect mapping for JDBC type:-1
atorg.hibernate.dialect.TypeNames.get(TypeNames.java
:56)
是hibernate与mysql的jdbc驱动配合上出现了问题:对于 mysql text类型jdbc ResultSetMetaData.getColumnType 返回-1 ,而hibernate没有注册该类型,所以导致createSQLQuery 报 No Dialect mapping for JDBCtype: -1。
解决这个问题:要么使用hql,不使用sql,
要么继承 MySQL5Dialect 类重写方法
import java.sql.Types;
importorg.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());
}
}
分享到:
相关推荐
MYSQL常用命令 和SQL语句(方言dialect)
主要介绍了简单了解数据库方言dialect,数据库方言也是如此,MySQL 是一种方言,Oracle 也是一种方言,MSSQL 也是一种方言,他们之间在遵循 SQL 规范的前提下,都有各自的扩展特性,需要的朋友可以参考下
轻松八句话 教会你完全搞定MySQL数据库很不错的,里面有你需要但不熟悉的方法
达梦数据库方言 (dialect) jar包 包含hibernate各版本,DmHibernateSpatial-1.0.jar, DmHibernateSpatial-1.1.jar,DmDialect-for-hibernate5.3.jar ... DmDictionary.jar,dmjooq-dialect-3.12.3.jar,gt-dameng-...
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
我的sqlite dialect.java
hibernate3dialect
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
hibernate3.6.0dialect.jar
hibernate5.2.0源码
Laravel开发-dialect 为雄辩的ORM提供JSON数据类型支持
最新达梦数7据库jar包&方言包,maven依赖jar包 DM达梦数据库jdbc-jar包dialect方言jar包
hibernate下的kingbase的jar文件,需要的同学自行下载
国产达梦dialect方言jar包,本文亲自整理,没有坑
mybatis 框架关于mysql、oracle、db2等数据库的sql方言包。
hibernate 4以上Hibernate.INTEGER之类的不能使用了,之前使用的SQLiteDialect.java编译不过去了,这个可以。
hibernate-sqlite方言支持 hibernate.4版本
南大通用GBase数据库GBase_Hibernate3.2.3_GA-Dialect_8.3.81.51_build50.1.jar