hibernate model mapping exception

    技术2022-05-13  16

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

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

    #sessionFactory#hibernate.dialect = org.hibernate.dialect.SQLServerDialecthibernate.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)