![](/img/trans.png)
[英]GWT Spring Hibernate Jpa, Injection of autowired dependencies failed
[英]Spring and Hibernate :Injection of autowired dependencies failed
我正在使用Spring和Hibernate在JAVAEE Project中工作,當我嘗試生成數據庫時,由於這個問題,我無法執行以下操作:
18:03:37,676 ERROR ContextLoader:331 -Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'daoAffectation': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.hibernate.SessionFactory ma.emsi.gestion.dao.DaoAffectationImpl.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from resource ma/emsi/gestion/mapping/Seance.hbm.xml
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
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:5003)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
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: org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.hibernate.SessionFactory ma.emsi.gestion.dao.DaoAffectationImpl.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from resource ma/emsi/gestion/mapping/Seance.hbm.xml
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
... 22 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from resource ma/emsi/gestion/mapping/Seance.hbm.xml
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
... 24 more
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource ma/emsi/gestion/mapping/Seance.hbm.xml
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3762)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3751)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3739)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:343)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:431)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:416)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
... 34 more
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping ma.emsi.gestion.model.Seance
at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2835)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:178)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3759)
... 44 more
這是Seance的映射:
<class name="ma.emsi.gestion.model.Seance" table="SEANCE">
<id name="idSeance" type="int">
<column name="ID_SEANCE" />
<generator class="increment" />
</id>
<property name="dateDebut" type="date">
<column name="DATEDEBUT" />
</property>
<property name="dateFin" type="date">
<column name="DATEFIN" />
</property>
<property name="heureDebut" type="date">
<column name="HeureDebut" />
</property>
<property name="heureFin" type="date">
<column name="HEUREFIN" />
</property>
<property name="salle" type="string" length="5">
<column name="SALLE" />
</property>
<many-to-one name="planing" class="ma.emsi.gestion.model.Planing">
<column name="ID_PLANING" />
</many-to-one>
<many-to-one name="affectation" class="ma.emsi.gestion.model.Affectation">
<column name="ID_AFFECTATION" />
</many-to-one>
</class>
這是Affectation的映射:
<class name="ma.emsi.gestion.model.Affectation" table="AFFECTATION">
<id name="idAffectation" type="int" column="ID_AFFECTATION">
<generator class="increment"/>
</id>
<many-to-one name="matiere" class="ma.emsi.gestion.model.Matiere">
<column name="ID_MATIERE" />
</many-to-one>
<many-to-one name="prof" class="ma.emsi.gestion.model.Prof">
<column name="ID_PROF" />
</many-to-one>
<bag name="seances" cascade="all">
<key column="ID_AFFECTATION" />
<one-to-many class="ma.emsi.gestion.model.Seance" />
</bag>
<many-to-one name="classe" class="ma.emsi.gestion.model.Classe">
<column name="ID_CLASSE" />
</many-to-one>
</class>
這是我的Seance和Affectation模型班:
public class Classe {
private String filiere;
private int groupe;
private int idClasse;
private int niveau;
private Collection<Module> modules;
private Collection<Planing> plannings;
public Classe() {
super();
// TODO Auto-generated constructor stub
}
public String getFiliere() {
return filiere;
}
public void setFiliere(String filiere) {
this.filiere = filiere;
}
public int getGroupe() {
return groupe;
}
public void setGroupe(int groupe) {
this.groupe = groupe;
}
public int getIdClasse() {
return idClasse;
}
public void setIdClasse(int idClasse) {
this.idClasse = idClasse;
}
public int getNiveau() {
return niveau;
}
public void setNiveau(int niveau) {
this.niveau = niveau;
}
public Collection<Module> getModules() {
return modules;
}
public void setModules(Collection<Module> modules) {
this.modules = modules;
}
public Collection<Planing> getPlannings() {
return plannings;
}
public void setPlannings(Collection<Planing> planning) {
this.plannings = planning;
}
/*****************************************/
public class Affectation {
private int idAffectation;
private Classe classe;
private Matiere matiere;
private Support support;
private Prof prof;
private Collection<Seance> seances;
public Affectation() {
super();
}
public int getIdAffectation() {
return idAffectation;
}
public void setIdAffectation(int idAffectation) {
this.idAffectation = idAffectation;
}
public Classe getClasse() {
return classe;
}
public void setClasse(Classe classe) {
this.classe = classe;
}
public Matiere getMatiere() {
return matiere;
}
public void setMatiere(Matiere matiere) {
this.matiere = matiere;
}
public Support getSupport() {
return support;
}
public void setSupport(Support support) {
this.support = support;
}
public Prof getProf() {
return prof;
}
public void setProf(Prof prof) {
this.prof = prof;
}
public Collection<Seance> getSeances() {
return seances;
}
public void setSeances(Collection<Seance> seances) {
this.seances = seances;
}
}
最后是我的DAO實現:
@Repository("daoAffectation")
public class DaoAffectationImpl implements IdaoAffectation {
@Autowired
SessionFactory sessionFactory;
@Override
public void add(Affectation afectation) {
sessionFactory.getCurrentSession().save(afectation);
}
@Override
public void update(Affectation affectation) {
// TODO Auto-generated method stub
sessionFactory.getCurrentSession().update(affectation);
}
@Override
public void delete(Affectation affectaion) {
// TODO Auto-generated method stub
sessionFactory.getCurrentSession().delete(affectaion);
}
@Override
public Affectation getById(int idAffectation) {
// TODO Auto-generated method stub
return (Affectation)sessionFactory.getCurrentSession().load(Affectation.class, idAffectation);
}
@Override
public List<Affectation> getAll() {
return sessionFactory.getCurrentSession().createCriteria(Affectation.class).list();
}
}
有人可以幫我嗎
編輯
Seance類模型:
public class Seance {
private int idSeance;
private Date dateDebut;
private Date dateFin;
private Date heureDebut;
private Date heureFin;
private String salle;
private Planing planing;
private Affectation affectation;
public Seance() {
super();
// TODO Auto-generated constructor stub
}
public Date getDateDebut() {
return dateDebut;
}
public void setDateDebut(Date dateDebut) {
this.dateDebut = dateDebut;
}
public Date getDateFin() {
return dateFin;
}
public void setDateFin(Date dateFin) {
this.dateFin = dateFin;
}
public Date getHeureDebut() {
return heureDebut;
}
public void setHeureDebut(Date heureDebut) {
this.heureDebut = heureDebut;
}
public Date getHeureFin() {
return heureFin;
}
public void setHeureFin(Date heureFin) {
this.heureFin = heureFin;
}
public int getIdSeance() {
return idSeance;
}
public void setIdSeance(int idSeance) {
this.idSeance = idSeance;
}
public String getSalle() {
return salle;
}
public void setSalle(String salle) {
this.salle = salle;
}
public Planing getPlanning() {
return planing;
}
public void setPlanning(Planing planning) {
this.planing = planning;
}
public Affectation getAffectation() {
return affectation;
}
public void setAffectation(Affectation affectation) {
this.affectation = affectation;
}
}
編輯2
休眠配置:
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping resource="ma/emsi/gestion/mapping/Etudiant.hbm.xml" />
<mapping resource="ma/emsi/gestion/mapping/Classe.hbm.xml" />
<mapping resource="ma/emsi/gestion/mapping/Matiere.hbm.xml" />
<mapping resource="ma/emsi/gestion/mapping/Planing.hbm.xml" />
<mapping resource="ma/emsi/gestion/mapping/Prof.hbm.xml" />
<mapping resource="ma/emsi/gestion/mapping/Seance.hbm.xml" />
<mapping resource="ma/emsi/gestion/mapping/Affectation.hbm.xml" />
</session-factory>
</hibernate-configuration>
在您的stacktrace中,您Could not parse mapping document from resource ma/emsi/gestion/mapping/Seance.hbm.xml
看起來好像找到了xml,但是它不包含預期的結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.