Hibernate 自定义方言
2016-04-04 11:58
381 查看
自定义一个方言类——Hibernate Dialect
标签: hibernatesqlserverjdbcmysql数据库java2012-07-04 18:46 2847人阅读 评论(1) 收藏 举报
分类:
Hibernate(22)
该类需要继承与我们使用的数据库相应的方言类。比如:如果我们用的是MySql(版本为5.x.x),我们需要继承“org.hibernate.dialect.MySQL5Dialect”;如果我们使用的是DB2,那么我们应该继承“org.hibernate.dialect.DB2Dialect”;我用的是SqlServer2008,所以我要继承“org.hibernate.dialect.SQLServerDialect”
[java] view plaincopy
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQL5Dialect;
/**
* 重写MySQL5Dialect类,注册Types
* @author lz
*
*/
public class MyDialect extends MySQL5Dialect {
public MyDialect(){
super();
registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());
registerHibernateType(Types.LONGVARCHAR,Hibernate.STRING.getName());
registerHibernateType(Types.BINARY,Hibernate.STRING.getName());
registerHibernateType(-1, Hibernate.STRING.getName());
}
}
说明: 如果你的数据库是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
<property name="hibernate.dialect">
com.yourcompany.MyDialect
</property>
相关文章推荐
- ajax跨域访问
- 在一个应用中打开另一个应用
- 按键精灵 代码
- 论文笔记--人脸检测JDA
- 2014 史丰收速算
- UVA 10325 The Lottery(容斥原理)
- is kind of class 与 is member of class 的区别
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月4日)
- IOS开发之免费证书+不越狱真机调试
- C#中异常处理语句Finally
- canvas 的save()和restore()方法
- SSD硬盘 全盘安全擦除
- java输出菱形(正金字塔+倒金字塔)
- Tensorflow 官方版教程中文版
- GDOI'2016市选day1 —— 3. 最大值求和 (summax)
- codeforces 143 C.To Add or Not to Add (YY 二分 处理一下前缀和)
- LeetCode #2 Add Two Numbers Cpp Solution
- SNAT,是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址
- dp学习之BadNeighbors解法
- AQS(5):ReentrantLock