您的位置:首页 > 移动开发

MySQL No Dialect mapping for JDBC type: -1

2012-11-26 11:37 323 查看
MySQL数据库中有张表的字段是text,查询出来后对应的java类型是String,Dialect设置为org.hibernate.dialect.MySQLDialect

运行的时候报错:No Dialect mapping for JDBC type:-1

错误的原因是MySQL和java类型转换错误,解决方法如下:

1.首先自己写一个class,继承org.hibernate.dialect.MySQLDialect

package com.util;

import java.sql.Types;

import org.hibernate.Hibernate;

import org.hibernate.dialect.MySQLDialect;

/**

*

* 解决No Dialect mapping for JDBC type: -1

* @author wei

*

*/

public class BlobMySQLDialect extends MySQLDialect {

public BlobMySQLDialect() {

super();

registerHibernateType(Types.LONGNVARCHAR, Hibernate.TEXT.getName());

registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName()); /////////mysql text字段

registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());

}

}

2.Dialect设置为:包名.BlobMySQLDialect

注:其他的数据类型请参考下表
类型名称显示长度数据库类型JAVA类型JDBC类型(int)Types属性
VARCHARL+NVARCHARjava.lang.String12Types.VARCHAR
CHARNCHARjava.lang.String1Types.CHAR
BLOBL+NBLOBjava.lang.byte[]-4Types.LONGVARBINARY
TEXT65535VARCHARjava.lang.String-1Types.LONGVARCHAR
INTEGER4INTEGER UNSIGNEDjava.lang.Long4Types.INTEGER
TINYINT3TINYINT UNSIGNEDjava.lang.Integer-6Types.TINYINT
SMALLINT5SMALLINT UNSIGNEDjava.lang.Integer5Types.SMALLINT
MEDIUMINT8MEDIUMINT UNSIGNEDjava.lang.Integer4Types.INTEGER
BIT1BITjava.lang.Boolean-7Types.BIT
BIGINT20BIGINT UNSIGNEDjava.math.BigInteger-5Types.BIGINT
FLOAT4+8FLOATjava.lang.Float7Types.REAL
DOUBLE22DOUBLEjava.lang.Double8Types.DOUBLE
DECIMAL11DECIMALjava.math.BigDecimal3Types.DECIMAL
BOOLEAN1同TINYINTjava.lang.Integer-6Types.TINYINT
DATE10DATEjava.sql.Date91Types.DATE
TIME8TIMEjava.sql.Time92Types.TIME
DATETIME19DATETIMEjava.sql.Timestamp93Types.TIMESTAMP
TIMESTAMP19TIMESTAMPjava.sql.Timestamp93Types.TIMESTAMP
YEAR4YEARjava.sql.Date91Types.DATE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: