MySQL No Dialect mapping for JDBC type: -1

本文介绍了解决MySQL数据库中text字段映射到Java String类型的问题,通过自定义Dialect类来避免“NoDialect mapping for JDBC type:-1”错误,并提供了一种可行的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.String12 Types.VARCHAR
CHARNCHARjava.lang.String1 Types.CHAR
BLOBL+NBLOBjava.lang.byte[]-4 Types.LONGVARBINARY
TEXT65535VARCHARjava.lang.String-1 Types.LONGVARCHAR
INTEGER4INTEGER UNSIGNEDjava.lang.Long4 Types.INTEGER
TINYINT3TINYINT UNSIGNEDjava.lang.Integer-6 Types.TINYINT
SMALLINT5SMALLINT UNSIGNEDjava.lang.Integer5 Types.SMALLINT
MEDIUMINT8MEDIUMINT UNSIGNEDjava.lang.Integer4 Types.INTEGER
BIT1BITjava.lang.Boolean-7 Types.BIT
BIGINT20BIGINT UNSIGNEDjava.math.BigInteger-5 Types.BIGINT
FLOAT4+8FLOATjava.lang.Float7 Types.REAL
DOUBLE22DOUBLEjava.lang.Double8 Types.DOUBLE
DECIMAL11DECIMALjava.math.BigDecimal3 Types.DECIMAL
BOOLEAN1同TINYINTjava.lang.Integer-6 Types.TINYINT
DATE10DATEjava.sql.Date91 Types.DATE
TIME8TIMEjava.sql.Time92 Types.TIME
DATETIME19DATETIMEjava.sql.Timestamp93 Types.TIMESTAMP
TIMESTAMP19TIMESTAMPjava.sql.Timestamp93 Types.TIMESTAMP
YEAR4YEARjava.sql.Date91 Types.DATE

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值