Hibernate注册自定义类型
2012-07-04 21:44
387 查看
该类需要继承与我们使用的数据库相应的方言类。比如:如果我们用的是MySql(版本为5.x.x),我们需要继承“org.hibernate.dialect.MySQL5Dialect”;如果我们使用的是DB2,那么我们应该继承“org.hibernate.dialect.DB2Dialect”;我用的是Oracle10g,所以我要继承“org.hibernate.dialect.Oracle10gDialect”
oracle10g中的会自动丢失时分秒,是ojdbc驱动问题,所以我们要自定义方言或者升级驱动
Oracle默认在hibernate映射是java.sql.Date类型时,,可以为这列配置java.sql.Timestamp
你的Oracle用了decimal类型,报错应该是 No Dialect mapping for JDBC type: 3 . 注意这个3, 它说明hibernate不能将这种数据类型映射到你的java类中. 就需要在自定义的方言中用到:
registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());
将你的方言注册到hibernate.cfg.xml中
oracle10g中的会自动丢失时分秒,是ojdbc驱动问题,所以我们要自定义方言或者升级驱动
Oracle默认在hibernate映射是java.sql.Date类型时,,可以为这列配置java.sql.Timestamp
public class RegisterType1 extends Oracle10gDialect{ public RegisterType1() { // TODO Auto-generated constructor stub super(); registerHibernateType(Types.CHAR, Hibernate.STRING.getName());//将数据库的char类型转为String类型 registerHibernateType(Types.DATE, Hibernate.TIMESTAMP.getName()); registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName()); registerHibernateType(-1, Hibernate.STRING.getName()); } }
你的Oracle用了decimal类型,报错应该是 No Dialect mapping for JDBC type: 3 . 注意这个3, 它说明hibernate不能将这种数据类型映射到你的java类中. 就需要在自定义的方言中用到:
registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());
将你的方言注册到hibernate.cfg.xml中
<property name="dialect"> org.hzy.dao.RegIsterType1 </property>
相关文章推荐
- Hibernate 注册自定义类型
- Hibernate注册自定义类型
- Q_DECLARE_METATYPE(继承QObject的类都已经自动注册),注册后的类型可以作为QVariant的自定义类型
- 使用Hibernate返回自定义类型时报错的问题
- * hibernate3 自定义枚举映射类型
- hibernate中自定义数据类型的使用---UserType,CompositeUserType接口的使用
- Hibernate对自定义类型CompositeUserType的用法
- hibernate 自定义类型(地址)
- Qt自定义类型的注册与使用
- Hibernate的自定义数据类型实现接口——UserType详解
- 【深入Hibernate】——根据业务自定义Clob数据类型
- 自动注册自定义文件类型
- Qt使用自定义类型信号槽注册问题
- Hibernate自定义类型
- C# 自动注册自定义文件类型
- 自定义类型转换器(转换器的注册方法)
- hibernate之自定义数据类型
- Hibernate的自定义数据类型实现接口——UserType详解
- Hibernate自定义数据类型映射
- hiberante 注册自定义类型