zoukankan      html  css  js  c++  java
  • Java中使用Hhibernate遇到一个错误:No Dialect mapping for JDBC type:1

    今天遇到一个错误在使用Hibernate的时候,使用createSQLQuery获取数据。

    Query query = getSession().createSQLQuery(String.format("select rulestr,rultype from asr_rule where rulcode='%s'", baseRuleCode));
    for (Object item : query.list()) {
     ...
    }

    在query.list()时就出错了:No Dialect mapping for JDBC type:-1

    意思大概是没有与jdbc类型对应的方言。

    在数据库中把跟踪到的SQL运行一下,是成功的。根据提示看,rulestr是text类型的,rultype是int类型的,应该不会是rultype的问题,而是rulestr的问题。经过搜索,找到解决方法如下:

    1、继承一下MySQLDialect,注册text类型:

    public class MySqlDialectEx extends MySQLDialect {
        
    public MySqlDialectEx() {
            
    super();
            registerHibernateType(Types.LONGVARCHAR, 
    "text");
        }
    }

    2、beans.xml中配置方言为刚才写的MySqlDialectEx.

    <property name="hibernateProperties">
        
    <props>
            
    <prop key="hibernate.show_sql">false</prop>
            
    <prop key="hibernate.dialect">org.vsem.MySqlDialectEx</prop>
        
    </props>
    </property>
  • 相关阅读:
    java List转换为字符串并加入分隔符的一些方法总结
    jackson 实体转json 为NULL或者为空不参加序列化
    马云告别演讲
    Linux chmod命令
    Linux执行shell脚本的方法
    2019第36周日
    2019第36周六
    eclipse中的maven插件
    SpringBoot要点之使用Actuator监控
    eclipse隐藏的列编辑
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1772679.html
Copyright © 2011-2022 走看看