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>
  • 相关阅读:
    【原创】ZYNQ学习笔记(一) HelloWorld实现
    设置毛玻璃效果
    什么是UIImageView
    短信监听器
    内容观察者
    插入联系人
    UIFont
    什么是UILabel
    读取联系人案例
    利用内容提供者插入短信
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1772679.html
Copyright © 2011-2022 走看看