zoukankan      html  css  js  c++  java
  • Hibernate 自定义方言

     

    自定义一个方言类——Hibernate Dialect

    标签: hibernatesqlserverjdbcmysql数据库java
     分类:
     

    该类需要继承与我们使用的数据库相应的方言类。比如:如果我们用的是MySql(版本为5.x.x),我们需要继承“org.hibernate.dialect.MySQL5Dialect”;如果我们使用的是DB2,那么我们应该继承“org.hibernate.dialect.DB2Dialect”;我用的是SqlServer2008,所以我要继承“org.hibernate.dialect.SQLServerDialect”

    [java] view plaincopy
     
     
    1. import java.sql.Types;  
    2.   
    3. import org.hibernate.Hibernate;  
    4. import org.hibernate.dialect.MySQL5Dialect;  
    5. /** 
    6.  * 重写MySQL5Dialect类,注册Types 
    7.  
    8.  * @author lz 
    9.  * 
    10.  */  
    11. public class MyDialect extends MySQL5Dialect {  
    12.  public MyDialect(){  
    13.   super();  
    14.     
    15.   registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());  
    16.   registerHibernateType(Types.LONGVARCHAR,Hibernate.STRING.getName());  
    17.   registerHibernateType(Types.BINARY,Hibernate.STRING.getName());  
    18.   registerHibernateType(-1, Hibernate.STRING.getName());  
    19.  }  
    20. }  


    说明: 如果你的数据库是mysql,而又用了decimal类型,报错应该是 No Dialect mapping for JDBC type: 3 . 注意这个3, 它说明hibernate不能将这种数据类型映射到你的java类中. 就需要在自定义的方言中用到:说明:

    如果你的数据库是mysql,而又用了decimal类型,报错应该是 No Dialect mapping for JDBC type: 3 . 注意这个3, 它说明hibernate不能将这种数据类型映射到你的java类中. 就需要在自定义的方言中用到:

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

    如果你用了text数据类型,hibernate根本就不认识这种数据类型,所以会返回No Dialect mapping for JDBC type: -1

    这样的话,就需要在方言中加入:

    registerHibernateType(-1,Hibernate.STRING.getName());

    [html] view plaincopy
     
     
    1. <property name="hibernate.dialect">    
    2. com.yourcompany.MyDialect  
    3. </property>   
  • 相关阅读:
    SQL如何对时间戳字段按日期排序
    PHP书写SQL换行
    SQL修改字段
    SQL新增一个字段
    HTML加JS实现点击切换“观看”与“收起”效果切换
    盐:深沉的慢动作 让电影“支离破碎”
    笔:最终会走在一起吗
    笔:那个下午
    关于国内安装百夫长开源网站统计进度过慢的问题
    Java Web系列之JDBC
  • 原文地址:https://www.cnblogs.com/developer-ios/p/5351699.html
Copyright © 2011-2022 走看看