hibernate model mapping exception

在使用hibernate将查询出的数据映射到实体类时,出现映射错误,原因是有些特殊类型的字段不能直接进行映射,比如image等

解决方法,spring配置文件中,"sessionFactory"bean的有一项hibernate.dialect,是指定hibernate所使用的方言的,他的值可以写到一个自定义的property文件中,内容如下

#sessionFactory
#hibernate.dialect = org.hibernate.dialect.SQLServerDialect
hibernate.dialect = cpcns.gongyongzujian.util.MySQLServerDialect
#hibernate.show_sql = false;
hibernate.show_sql = true;

 

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  <property name="dataSource">
   <ref local="dataSource" />
  </property>
  
  <property name="mappingJarLocations">
   <list>
    <value>WEB-INF/lib/cpcns_base.jar</value>
    <value>WEB-INF/lib/CPCNS_ZuJianBase.jar</value>
           </list>
  </property>
  
  <property name="mappingDirectoryLocations">
   <list>
                <value>classpath:/cpcns/gongyongzujian/wenjianchuanshu/model</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
    <prop key="hibernate.connection.autocommit">true</prop> 
    <prop key="hibernate.connection.release_mode">after_statement</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.jdbc.batch_size">10</prop>
   </props>
  </property>
 </bean>

 

我们可以继承它的SQLServerDialect类,在自己定义的类里做下转换

 

public class MySQLServerDialect extends SQLServerDialect{
 public MySQLServerDialect() {
     super();
     registerHibernateType(Types.LONGVARBINARY, Hibernate.BLOB.getName());
 } 

}

 


同时将hibernate.dialect 的值改为 cpcns.gongyongzujian.util.MySQLServerDialect,及在.property中如下设置


 hibernate.dialect = cpcns.gongyongzujian.util.MySQLServerDialect

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值