2015-07-13 13 views
0

У меня есть эта ошибка каждый раз, когда я меняю свой файл xml. Вот что я получил:Hibernate sessionFactory или Hibernate Template missing

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managerExpedBitacora' defined in class path resource [config/spring/manager.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required

Полный стек:

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4728) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5166) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 

Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 
at org.springframework.orm.hibernate4.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:117) 
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) 
... 21 more 

Вот мои manager.xml, только refered линии:

<bean id="managerExpedBitacora" class="es.myCompany.lq.manager.impl.ManagerExpedBitacoraImpl"> 
      <property name="daoExpedBitacora" ref="daoExpedBitacora"/> 
</bean> 

... 
<bean id="managerExpedienteLS" class="es.myCompany.lq.manager.impl.ManagerExpedienteLSImpl"> 
    .... 
    <property name="managerExpedBitacora" ref="managerExpedBitacora" /> 
    .... 
</bean> 

А вот мои daos.xml, только несколько строк:

<bean id="daoExpedBitacora" class="es.myCompany.lq.dao.impl.DaoExpedBitacoraHbmImpl"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

Как вы можете видеть, я ввел sessionFactory.

И, applicationContext.xml, почта часть:

<import resource="classpath:config/spring/properties.xml"/> 
<import resource="classpath:config/spring/utils.xml"/> 
<import resource="classpath:config/spring/bbdd.xml"/> 
<import resource="classpath:config/spring/daos.xml"/> 
<import resource="classpath:config/spring/manager.xml"/> 
<import resource="classpath:config/spring/actions.xml"/> 

И часть моей DaoExpedBitacoraHbmImpl.java:

public class DaoExpedBitacoraHbmImpl extends HibernateDaoSupport implements 
    DaoExpedBitacora { 
...(methods) 
} 

И HibernateDaoSupport.java, только часть его.

public class HibernateDaoSupport extends org.springframework.orm.hibernate4.support.HibernateDaoSupport{ 
.... 
} 

Так, что здесь не так?

+1

У вас есть 'setSessionFactory', если так убедитесь, что он вызывает супер сеттер. Также, судя по фрагменту трассировки стека (пожалуйста, добавьте полную трассировку стека), ваша служба также расширяет класс 'HibernateDaoSupport' –

+0

. Можете ли вы объяснить, что вы написали в методе DaoExpedBitacoraHbmImpl. – Darshan

+0

Я вижу, что вам требуется sessionFactory в daoExpedBitacora, но где вы на самом деле его предоставляете? –

ответ

0

Мой руководитель проекта читать код, и сказал мой ManagerExpedBitacoraImpl.java, как реализация услуг, должны не распространяется HibernateDaoSupport.java. Это часть, которую я не опубликовал. Поэтому перед тем, как это было:

public class ManagerExpedBitacoraImpl extends HibernateDaoSupport implements ManagerExpedBitacora { 

    DaoExpedBitacora daoExpedBitacora; 

    public DaoExpedBitacora getDaoExpedBitacora() { 
    return daoExpedBitacora; 
    } 

    public void setDaoExpedBitacora(DaoExpedBitacora daoExpedBitacora) { 
    this.daoExpedBitacora = daoExpedBitacora; 
    } 
.... 

И это должно быть как:

public class ManagerExpedBitacoraImpl implements 
    ManagerExpedBitacora { 

    DaoExpedBitacora daoExpedBitacora; 

    public DaoExpedBitacora getDaoExpedBitacora() { 
    return daoExpedBitacora; 
    } 

    public void setDaoExpedBitacora(DaoExpedBitacora daoExpedBitacora) { 
    this.daoExpedBitacora = daoExpedBitacora; 
    } 
.... 

и в других классах реализации менеджер, я не вижу эту часть. Должен быть неправильный щелчок. Поэтому я удаляю эту часть, и все в порядке. Надеюсь, я помогу другим людям.

+0

Привет! HibernateDaoSupport и HibernateTemplate устарели в 2011 году - вы должны использовать '@ Transactional' и getCurrentSession http://stackoverflow.com/questions/5104765/hibernatedaosupport-is-not-recommended-why (если вы, конечно, не привязаны к Spring 2.5) –

+0

Да, я знаю это, спасибо. Я должен это изучить, и я это сделаю.Теперь я следую за старым кодом предыдущих коллег. – FaithReaper

Смежные вопросы