SSH2整合报错(网上搜的 很乱,自己整理吧)

1、org.hibernate.DuplicateMappingException:

原因:重复的类/实体映射
解决办法:查看项目的applicationContent.xml和hibernate.cfg.xml文件,
你会发现2个文件都重复了重复的类/实体映射,删除其中的一个文件中的

  <mapping resource="xxx.hbm.xml" />就ok了


 

2、org.hibernate.PropertyNotFoundException: Could not find........in class.......

原因:在该xxx.hbm.xml文件中<property name="指定持久化类的属性名字(要求与该实体类属性名一样)" ....>
或缺少实体类中该属性的set/get方法

解决办法:查看该xxx.hbm.xml中<property>元素的name属性中和该实体类(持久化类)的属性名一样
                         column属性指定与类的属性映射的表的字段名一致(不分大小写,建议全大写或全小写)。尽量按照要求来,这样错误会减少。


3、org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]
原因:hibernate二级缓存设置错误
   1,没有配cache的jar包(从hibernate官方文档的例题中获取)。

           2,在配置文件中配置出错.在hibernate.cfg.xml中为

    <property name="cache.use_second_level_cache">true</property>
   <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
   <property name="cache.use_query_cache">true</property>
  在application.xml中配置为

      <propkey="hibernate.cache.use_second_level_cache">true</prop>
      <propkey="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
      <propkey="hibernate.cache.use_query_cache">true</prop>


  注意!在上面两个配置是不一样的。
  这是因为在Hibernate的bean的hbm配置文件中配置了缓存,而在hibernate的配置中没有配置提供的缓存机制,
  在早起的hibernate的早起版本中默认是提供ehcache的,但是在最近的版本中已经不提供默认配置了。所以必须自己手工配置。
解决办法:在hibernate.cfg.xml中或在application.xml中配置二级缓存加入上面的3行代码

 
4、org.springframework.beans.factory.BeanCreationException: Error creating bean with 
原因:在该applicationContent.xml文件中
 <!-- DAObean -->

  <bean id="employeeDao (aaaa)" class="com.ucap.emp.dao.EmployeeDaoImpl" scope="singleton">
    <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>

 <!-- 配置注入:service<-DAO,可以多个dao注入同一个service -->

  <bean id="employeeService(bbb)" class="com.ucap.emp.service.EmployeeServiceImpl">
    <property name="employeeDao(ccc)" ref="employeeDao(aaaa)"></property>
  </bean>

  <!-- 配置注入:Action<-service -->
  <bean id="employeeAction" class="com.ucap.emp.action.EmployeeAction">
    <property name="employeeService" ref="employeeService(bbb)"></property>
  </bean>


解决办法:(注 (aaa)、(bbb)、(ccc)三个不同类型为代号)括号内颜色一致的在文件中上下一致
      
其中aaa表示Hibernate的dao类在applicationContent.xml文件中DAObean

        public class EmployeeServiceImpl implements EmployeeService {
          private EmployeeDao employeeDao;

         setter/getter 方法

       }

       bbb表示spring的service类在struts2的action类中的实例化的名:

       public class EmployeeAction extends ActionSupport {
        private Employee employee;

        private EmployeeService employeeService;

        setter/getter 方法       

       }

      ccc表示Hibernate的dao类在spring的service类中的实例化的名:


      public class EmployeeServiceImpl implements EmployeeService {
          private EmployeeDao employeeDao;

         setter/getter 方法

       }

上下保持一致,且和DAO类和service类实例化的时候名一致就ok了

5、 org.springframework.beans.ConversionNotSupportedException: Failed to convert
原因:注入错误,以上错误原因只是因为实现类没有继承接口

解决办法:查看该dao类是否缺少implement关键字 用来实现接口

 


 

 

posted @ 2013-04-17 17:31  cq-home  Views(372)  Comments(0Edit  收藏  举报