2016-04-03 6 views
0

Ich bin ein Neuling in Spring + Hibernate, aber ich habe an diesem Problem für den letzten Tag gearbeitet. Ich kann immer noch nicht herausfinden, was die Ursache ist, und was soll ich tun. Also, vielen Dank im Voraus, wenn jemand mir einen Rat geben kann.Spring + Hibernate, kann nicht lesen xml Fehler

hier ein Problem ist, ich einen einfachen Test Klasse nur schreiben, aber wenn ich lief, gibt es eine Ausnahme:

??: Ausnahme während Kontext Initialisierung aufgetreten - Cancelling refresh> Versuch: org.springframework .beans.factory.BeanCreationException: Fehler beim Erstellen von Bean mit dem Namen 'sessionFactory' in der Klassenpfadressource >>>>>>> [ApplicationContext.xml]: Aufruf der init-Methode fehlgeschlagen; verschachtelte Ausnahme ist> org.hibernate.InvalidMappingException: XML konnte nicht gelesen werden Ausnahme im Thread "main"> org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen von Bean> mit dem Namen 'sessionFactory' in der Klassenpfadressource definiert> [ApplicationContext. xml]: Aufruf der init-Methode fehlgeschlagen; verschachtelte Ausnahme ist> org.hibernate.InvalidMappingException: Nicht imstande, XML bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1578) bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory zu lesen. doCreateBean (AbstractAutowireCapableBeanFactory.java:545) bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:482) bei org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java : 306) bei org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) bei org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302) bei org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) bei org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:753) bei org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:839) bei org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:538) bei org.springframework.context.support. ClassPathXmlApplicationContext (ClassPathXmlApplicationContext.java:139) unter org.springframework.context.support.ClassPathXmlApplicationContext (ClassPathXmlApplicationContext.java:83) bei com.xw.test.Test.main (Test.jav a: 30)

Und hier ist die Klasse Quellcode:

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(){ 
    } 
    } 

Und hier ist die 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> 

Und hier ist die ApplicationContext.cfg.xml

<?xml version="1.0" encoding="utf-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-4.1.xsd"> 

<bean id="testService" class="com.xw.test.TestService"> 
    <property name="name" value="XingWang"/> 
</bean> 


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/> 
    <property name="username" value="scott"/> 
    <property name="password" value="111111"/> 
    <property name="initialSize" value="3"/> 
    <property name="maxActive" value="500"/> 
    <property name="maxIdle" value="2"/> 
    <property name="minIdle" value="1"/> 
</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"> 
     <value> 
      hibernate.dialect=org.hibernate.dialect.OracleDialect 

     </value> 
    </property> 
</bean> 

</beans> 

Und die 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> 

Und hier ist die smiple Testklasse Quellcode:

/** 
* 
*/ 
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(); 


    } 

} 

Vielen Dank für jeden Hinweis!

Antwort

0

Die Eigenschaften sollten wie folgt in Ihrer sessionFactory Bean deklariert werden.

so wäre Ihre SessionFactory Bean wie unten.

<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

Hallo, Herr Deendayal Garg. Vielen Dank für deine Hilfe. Und ich habe nach deinem Ratschlag modifiziert. Aber die Erwartung ist dieselbe. Übrigens, kannst du mir sagen, welches Handbuch ich prüfen soll? Ich versuche ein offizielles Handbuch zu finden, um zu vergleichen, ob ich etwas übersehen oder missverstanden habe, aber ich kann nicht sicher sein, welche Version ich in meinem Fall wählen sollte. Das tut mir leid. Und die besten Wünsche für Sie! – xing