2016-04-03 19 views
0

私はSpring + Hibernateの初心者ですが、私はこの問題を最後の一日の間処理しました。根本的な原因が何であるのか、私は何をすべきなのかまだ分かりません。だから、もし助けてくれれば、事前に感謝します。ここでSpring + Hibernate、xmlエラーを読み取ることができません

が問題ですが、私はちょうど簡単なテストクラスを作成しますが、私が実行したときに、例外があります:

??:コンテキストの初期化中に発生した例外 - キャンセルリフレッシュ>の試み:org.springframework .beans.factory.BeanCreationException:エラー>クラスパスのリソースで定義された 'sessionFactory'という名前のBeanを作成する>>>>>>> [ApplicationContext.xml]:initメソッドの呼び出しに失敗しました。 > org.hibernate.InvalidMappingException:XMLを読み取ることができません スレッド "main"> org.springframework.beans.factory.BeanCreationExceptionで例外が発生しました:クラスパスのresource> [ApplicationContext。 xml]:initメソッドの呼び出しに失敗しました。ネストされた例外は> org.hibernate.InvalidMappingExceptionです:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactoryでorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) でXML を読み取ることができません。 org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObjectでdoCreateBean(AbstractAutowireCapableBeanFactory.java:545)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)で (AbstractBeanFactory.java :306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean( org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletonsでorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) でAbstractBeanFactory.java:302) (DefaultListableBeanFactory.java:753) org.springframework.context.support.AbstractApplicationContext.refreshでorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) (AbstractApplicationContext.java:538)org.springframework.context.supportで で。 (ClassPathXmlApplicationContext.java:83) at org.springframework.context.support.ClassPathXmlApplicationContext(ClassPathXmlApplicationContext.java:83) at com.xw.test.Test.main(Test.jav A:30)

そしてここでは、クラスのソースコードは次のとおりです。

package com.domain; 

import java.util.Date; 

public class Employee { 

    private Integer id; 

    private String name; 
    private String email; 
    private java.util.Date hiredate; 
    private Float salary; 

    public Float getSalary() { 
     return salary; 
    } 
    public void setSalary(Float salary) { 
     this.salary = salary; 
    } 
    public Integer getId() { 
     return id; 
    } 
    public void setId(Integer id) { 
     this.id = id; 
    } 
    public java.util.Date getHiredate() { 
     return hiredate; 
    } 
    public void setHiredate(java.util.Date hiredate) { 
     this.hiredate = hiredate; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getEmail() { 
     return email; 
    } 
    public void setEmail(String email) { 
     this.email = email; 
    } 

    public Employee(String name, String email, Date hiredate, 
      Float salary) { 
     this.name = name; 
     this.email = email; 
     this.hiredate = hiredate; 
     this.salary = salary; 
    } 

    public Employee(){ 
    } 
    } 

そして、ここではEmployee.hbm.xml

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-mapping package="com.domain"> 
    <class name="Employee" table="employee"> 
     <id name="id" type="java.lang.Integer"> 
      <generator class="native" ></generator> 
     </id> 

    <property name="email" type="java.lang.String" > 
     <column name="email" length="64"/> 
    </property> 

    <property name="hiredate" type="java.util.Date"> 
    <column name="hiredate" /> 
    </property> 

    <property name="name" type="java.lang.String"> 
    <column name="name"/> 
    </property> 

    <property name="salary" type="java.lang.Float"> 
    <column name="salary"/> 
    </property> 


    </class> 
</hibernate-mapping> 

そして、ここでApplicationContext.cfg.xmlです

そして、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>myssh</groupId> 
    <artifactId>myssh</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <warSourceDirectory>WebRoot</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 


    </build> 

    <dependencies> 
    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>4.3.2.Final</version> 
</dependency> 




    <dependency> 
    <groupId>commons-dbcp</groupId> 
    <artifactId>commons-dbcp</artifactId> 
    <version>1.4</version> 
</dependency> 

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>4.2.5.RELEASE</version> 
</dependency> 


<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>4.2.5.RELEASE</version> 
</dependency> 

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>4.2.5.RELEASE</version> 
</dependency> 

</dependencies> 

そしてここsmipleテストクラスのソースコードです:

/** 
* 
*/ 
package com.xw.test; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

import com.domain.Employee; 

/** 
* @author Administrator 
* 
*/ 
public class Test { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     ApplicationContext ac = new ClassPathXmlApplicationContext("ApplicationContext.xml"); 

     SessionFactory sf = (SessionFactory) ac.getBean("sessionFactory"); 
     Session s = sf.openSession(); 

     Employee employee = new Employee("aa", "[email protected]", new java.util.Date(), 
       (float) 234.56) ; 
     Transaction tx = s.beginTransaction(); 
     s.save(employee); 
     tx.commit(); 


    } 

} 

はどんなアドバイスをありがとうございました!

答えて

0

プロパティは、sessionFactory Bean内で以下のように宣言する必要があります。

したがって、sessionFactory Beanは以下のようになります。

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
<property name="dataSource" ref="dataSource"/> 
<property name="mappingResources"> 
    <list> 
     <value>com/domain/Employee.hbm.xml</value> 
    </list> 
</property> 
<property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> 
      </props> 
</property> 

+0

こんにちは、ミスターDeendayalガーグ。手伝ってくれてどうもありがとう。私はあなたのアドバイスに従って修正しました。しかし、外出は同じです。ちなみに、どのマニュアルをチェックするべきか教えてください。私は何かを逃したか納得しないかを比較するための公式マニュアルを見つけようとしていますが、私の場合はどのバージョンを選択すべきかを確認することはできません。ごめんなさい。そして、あなたに最高の願いを! – xing

関連する問題