Hii iam用hibernate做春天ORM。在运行程序时,我得到了吼叫错误..我给我所有的配置,pojo,daos请检查
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'vehicleDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate in.JavaHome.SpringHiber.DAO.vehicleDao.template; nested exception is java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;
Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.clearCache()V
at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:879)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:563)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at addVehicle.main(addVehicle.java:11)
配置弹簧是..
<context:component-scan base-package="in.JavaHome.SpringHiber"></context:component-scan>
<bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>
<bean name="hibTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean name="hibTransManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="hibTransManager"/>
Dao Class
@Component
public class vehicleDao {
@Autowired
private HibernateTemplate template;
@Transactional
public void addVehicle(vehicle v){
template.save(v);
}
main.java
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext contex= new ClassPathXmlApplicationContext("config.xml");
vehicleDao dao = (vehicleDao) contex.getBean("vehicleDao.class");
vehicle v=new vehicle();
v.setName("S cross");
v.setCost(1500000);
dao.addVehicle(v);
}
我刚接触到春天的mvc,请告诉我问题的原因。
谢谢你
答案 0 :(得分:0)
如果我的猜测是正确的,那么您正在学习有关Spring的教程。如果是这样,祝贺并祝你好运,Spring是一个非常强大的框架!虽然看起来你正在使用一个非常古老的教程 - 我建议寻找更现代的Spring教程示例,因为XML配置(以及Hibernate 3)不是现代方法。也许来自:http://spring.io/guides
但是对于这个特定的问题,你的类路径上似乎有不兼容的jar。如果你打算使用hibernate 3,你需要确保它在类路径上并且你没有使用现代版本的spring。请参阅:compatability of spring 4.0.0 with hibernate 4.30
答案 1 :(得分:-1)
问题是你在xml中定义了bean这样的
<bean name="hibTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
但是使用自动装配bean名称的模板应该相同或使用@Qualifier
@Autowired
private HibernateTemplate template;
将此更改为
@Autowired
private HibernateTemplate hibTemplate;
或
@Autowired @Qualifier(&#34; hibTemplate&#34) private HibernateTemplate hibTemplate;