HIBERNATE乱码问题
我在做一个练习的时候后台数据库是Sybase的字符集是cp850用Spring的Hibernate连接后用find()从数据库里取到的值都是乱码,我写了一个方法里到List里把它一项一项的转正了GBK,但是我想问问有没有更好的方法,不用一个一个的转。下面是applicationContext.xml的代码
<?xml version="1.0" encoding="UTF-8"?><!--- Application context definition for JPetStore's business layer.- Contains bean references to the transaction manager and to the DAOs in- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").- in Spring Train by zhangzhenhua 2007.4.23--><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jee="http://www.springframework.org/schema/jee"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"><value>com.sybase.jdbc2.jdbc.SybDriver</value></property><property name="url"><value>jdbc:sybase:Tds:10.201.1.111:5000/sgmarketdatabase</value></property><property name="username"><value>sa</value></property><property name="password"><value>su27ik</value></property></bean><!-- <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/sysmanager"/> --><bean id="SessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource"></ref></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><property name="mappingResources"><list><value>com/lhd/sysmanager/pojo/MarketRole.hbm.xml</value><value>com/lhd/sysmanager/pojo/MarketWork.hbm.xml</value><value>com/lhd/sysmanager/pojo/MarketUser.hbm.xml</value><value>com/lhd/sysmanager/pojo/WorkLog.hbm.xml</value><value>com/lhd/sysmanager/pojo/PubDept.hbm.xml</value></list></property></bean><bean id="MarketRoleDAO"class="com.lhd.sysmanager.dao.imp.MarketRoleDAO"><property name="sessionFactory"><ref bean="SessionFactory"></ref></property></bean><bean id="MarketWorkDAO"class="com.lhd.sysmanager.dao.imp.MarketWorkDAO"><property name="sessionFactory"><ref bean="SessionFactory"></ref></property></bean><bean id="MarketUserDAO"class="com.lhd.sysmanager.dao.imp.MarketUserDAO"><property name="sessionFactory"><ref bean="SessionFactory"></ref></property></bean><bean id="WorkLogDAO"class="com.lhd.sysmanager.dao.imp.WorkLogDAO"><property name="sessionFactory"><ref bean="SessionFactory"></ref></property></bean><bean id="PubDeptDAO"class="com.lhd.sysmanager.dao.imp.PubDeptDAO"><property name="sessionFactory"><ref bean="SessionFactory"></ref></property></bean><bean id="PageDAO"class="com.lhd.sysmanager.dao.imp.PageDAO"><property name="sessionFactory"><ref bean="SessionFactory"></ref></property></bean><tx:advice id="TxManager"><!-- 事务通知 --><tx:attributes><tx:method name="list*" read-only="true" rollback-for="Exception"/><tx:method name="find*" read-only="true" rollback-for="Exception"/> <tx:method name="query*" read-only="true" rollback-for="Exception"/><tx:method name="add*" rollback-for="Exception"/><tx:method name="dele*" rollback-for="Exception"/></tx:attributes></tx:advice><aop:config><!-- 事务管理 --><aop:pointcut id="defaultService" expression="execution(* com.lhd.sysmanager.manager.*.*(..))"/><aop:advisor pointcut-ref="defaultService" advice-ref="TxManager"/></aop:config><!-- Spring集成的hibernate事务管理类 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref local="SessionFactory"/></property> </bean> <bean id="MarketRoleService" class="com.lhd.sysmanager.manager.MarketRoleManager"><property name="dao" ref="MarketRoleDAO"></property></bean><bean id="MarketUserService" class="com.lhd.sysmanager.manager.MarketUserManager"><property name="dao" ref="MarketUserDAO"></property></bean><bean id="MarketWorkService" class="com.lhd.sysmanager.manager.MarketWorkManager"><property name="dao" ref="MarketWorkDAO"></property></bean><bean id="PubDeptService" class="com.lhd.sysmanager.manager.PubDeptManager"><property name="dao" ref="PubDeptDAO"></property></bean><bean id="WorkLogService" class="com.lhd.sysmanager.manager.WorkLogManager"><property name="dao" ref="WorkLogDAO"></property></bean><bean id="PageService" class="com.lhd.sysmanager.manager.PageManager"><property name="page" ref="PageDAO"></property></bean></beans>
下面是find()方法
public List find() {log.debug("finding MarketWork instance by example");try {List results = getHibernateTemplate().find("from com.lhd.sysmanager.pojo.MarketUser u order by u.id desc");log.debug("findsuccessful, result size: "+ results.size());for(int i= 0;i<result.size();i++) { MarketUser us = (MarketUser)result.get(i); us.setDeptName(PubMethod.ISOtoGBK(us.getDeptName())); System.out.println("#######"+us.getDeptName()+"#####"); }return results;} catch (RuntimeException re) {log.error("find failed", re);throw re;}}
页:
[1]