• 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>   
  • 相关阅读:
    兼容性问题--HTML+CSS
    限时购--倒计时⏳
    如何把项目上传到GitHub上
    转载:java面试题(一)
    转载:php excel 的处理
    转载:Angular的filter总结
    转载:Think in AngularJS:对比jQuery和AngularJS的不同思维模式(大漠穷秋)
    转载:对比Angular/jQueryUI/Extjs:没有一个框架是万能的
    在eclipse中添加svn插件
    最近的一些事儿
  • 原文地址:https://www.cnblogs.com/developer-ios/p/5351699.html
Copyright © 2020-2023  润新知