本文介绍了org.hibernate.MappingException:否JDBC类型的Dialect映射:-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到了 org.hibernate.MappingException:没有用于JDBC类型的Dialect映射:从数据库中获取行时发生-1 错误。



错误详情

 异常

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是org.hibernate.MappingException:否JDBC类型的Dialect映射:-1
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
org.springframework.web。 servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java: 717)
根本原因

org.hibernate.MappingException:无JDBC类型的方言映射:-1
org.hibernate.dialect.TypeNames.get(TypeNames.java:56 )
org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
org.hibernate.loader .custom.CustomLoader $ Metadata.getHibernateType(CustomLoader.java:559)
org.hibernate.loader.custom.CustomLoader $ ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485)
org.hibernate.loader.custom .CustomLoader.autoDiscov erTypes(CustomLoader.java:501)
org.hibernate.loader.Loader.getResultSet(Loader.java:1796)
org.hibernate.loader.Loader.doQuery(Loader.java:674)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.doList(Loader.java:2213)
org.hibernate.loader.Loader。 listIgnoreQueryCache(Loader.java:2104)
org.hibernate.loader.Loader.list(Loader.java:2099)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
org.hibernate.impl。 SQLQueryImpl.list(SQLQueryImpl.java:152)
com.report.dao.BestSellerReportDAO.getBestSellReport(BestSellerReportDAO.java:82)
com.report.service.BestSellerService.getBestSellReport(BestSellerService.java:21)
com.report.service.BestSellerService $$ FastClassB yCGLIB $$ 3c172a2c.invoke(< generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
org.springframework.aop.framework.Cglib2AopProxy $ CglibMethodInvocation。 invokeJoinpoint(Cglib2AopProxy.java:692)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.Cglib2AopProxy $ DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)
com.report.service.BestSellerService $$ EnhancerByCGLIB $$ 1ca7eb9d_2.getBestSellReport(< generated>)
com.report.controller.BestSellerReportController.onSubmit(BestSellerReportController.java:55)
sun.reflect .NativeMethodAccessorImpl.invoke0(本地方法)
sun.refle (NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java: (AnnotationMethodHandlerAdapter)。 java:402)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.Framew orkServlet.processRequest(FrameworkServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
javax.servlet.http.HttpServlet.service(HttpServlet.java: 637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

使用代码:

  query = sessionFactory.getCurrentSession()。 createSQLQuery(CALL my_sp_test(:gender_id,:category_id,:is_date_criteria_on,:from_date,:to_date,:unit_sold_above)); 
query.setParameter(gender_id,bestSellCriteriaForms [0] .getSelectedGender()); query.setParameter( CATEGORY_ID,bestSellCriteriaForms [0] .getSelectedDepartment());
query.setParameter(unit_sold_above,200);
query.setParameter(is_date_criteria_on,true);
query.setParameter(from_date,date);
query.setParameter(to_date,date);

//将查询作为列表获取
reportList = query.list();

我在寻找这个错误,但是coudn't没有找到任何解决方案。

我该如何解决这个问题? (老实说,我不明白为什么会发生这种情况)

解决方案

我通过编写我自己的方言课程来回答我的答案,

  import java.sql.Types; 

导入org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLDialect;
导入org.hibernate.dialect.function.StandardSQLFunction;
$ b $ public class CustomeDialect extends MySQLDialect {

$ b $ public CustomeDialect(){
registerFunction(group_concat,new StandardSQLFunction(group_concat,Hibernate。串));
registerFunction(coalesce,新的StandardSQLFunction(coalesce,Hibernate.STRING));
registerHibernateType(Types.LONGVARCHAR,Hibernate.TEXT.getName());

$ b}

并添加到disptcher-servlet。 xml as

 < bean id =MySessionFactoryclass =org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean> ; 
< property name =dataSourceref =mydbDatasource/>
< property name =configurationClass>
< value> org.hibernate.cfg.AnnotationConfiguration< / value>
< / property>
< property name =packagesToScanvalue =com.example.entity/>
< property name =hibernateProperties>
<值>
hibernate.dialect = com.example.utils.CustomeDialect
< / value>
< / property>
< / bean>

它对我来说工作得很好。

I am getting org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 error while fetching row from database.

ERROR details

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
    org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
    org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
    org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
    org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)
    org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485)
    org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501)
    org.hibernate.loader.Loader.getResultSet(Loader.java:1796)
    org.hibernate.loader.Loader.doQuery(Loader.java:674)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    org.hibernate.loader.Loader.doList(Loader.java:2213)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    org.hibernate.loader.Loader.list(Loader.java:2099)
    org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
    org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
    org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
    org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
    com.report.dao.BestSellerReportDAO.getBestSellReport(BestSellerReportDAO.java:82)
    com.report.service.BestSellerService.getBestSellReport(BestSellerService.java:21)
    com.report.service.BestSellerService$$FastClassByCGLIB$$3c172a2c.invoke(<generated>)
    net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)
    com.report.service.BestSellerService$$EnhancerByCGLIB$$1ca7eb9d_2.getBestSellReport(<generated>)
    com.report.controller.BestSellerReportController.onSubmit(BestSellerReportController.java:55)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Using code:

query = sessionFactory.getCurrentSession().createSQLQuery("CALL my_sp_test(:gender_id,:category_id,:is_date_criteria_on,:from_date,:to_date,:unit_sold_above)");
query.setParameter("gender_id",bestSellCriteriaForms[0].getSelectedGender());       query.setParameter("category_id",bestSellCriteriaForms[0].getSelectedDepartment());
query.setParameter("unit_sold_above", 200);
query.setParameter("is_date_criteria_on", true);
query.setParameter("from_date", date);
query.setParameter("to_date", date);

//Get query as list
reportList = query.list();

I am searching about this error, but coudn't found any solution yet.

How can I resolve this issue? (And honestly saying, I couldn't understand why it's occurring)

解决方案

I resoled my answer by writing my own dialect class as

import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLDialect;
import org.hibernate.dialect.function.StandardSQLFunction;

public class CustomeDialect extends MySQLDialect {


public CustomeDialect(){
    registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING));
    registerFunction("coalesce", new StandardSQLFunction("coalesce", Hibernate.STRING));
    registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());

}
}

and added to disptcher-servlet.xml as

<bean id="MySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="mydbDatasource"/>
     <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
     </property>
     <property name="packagesToScan" value="com.example.entity" />
     <property name="hibernateProperties">
      <value>
        hibernate.dialect=com.example.utils.CustomeDialect
      </value>
    </property>
  </bean>

And its working fine for me.

这篇关于org.hibernate.MappingException:否JDBC类型的Dialect映射:-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 08:39
查看更多