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关键字 用来实现接口