我用的 myeclispe8.0的
hibernate3.2
自己参照书本,修改了了。用的MYSQL数据库
开始运行后,就抛出一堆异常。整理了几个小时都没有办法
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.InvalidMappingException: Could not parse mapping document from resource action/shouzhi.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at action.Buinessdemos.<clinit>(Buinessdemos.java:24)
at action.Ser.doGet(Ser.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:508)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
... 21 more
Caused by: org.dom4j.DocumentException: http://hibernate.sourceforge.net/hibernate-mapping-3.2.dtd Nested exception: http://hibernate.sourceforge.net/hibernate-mapping-3.2.dtd
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499)
... 22 more
java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:579)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
at action.Ser.doGet(Ser.java:43)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
劳烦大虾给指点

解决方案 »

  1.   

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration>    <session-factory>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="connection.url">jdbc:mysql//localhost:3306/account</property>
            <property name="connection.username">root</property>
            <property name="connection.password">1111</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <mapping resource="action/shouzhi.hbm.xml"/>  
        </session-factory></hibernate-configuration>
    hibernate.cfg.xml文件的内容
      

  2.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.2//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.2.dtd">
    <hibernate-mapping>
                 <class name="entiy.shouzhi" table="shouzhi">
                    <id name="id"column="id"type="int">
                       <generator class="native"/>
                    </id>
                     <property name="Inname"column="inname"type="string"/>
                     <property name="re"column="re"type="string"/>
                     <property name="payfor"column="payfor"type="float"/>
                     <property name="times"column="times"type="date"/>
                 </class>
    </hibernate-mapping>
      

  3.   

    package action;import javax.servlet.*;
    import org.hibernate.*;
    import org.hibernate.cfg.Configuration;//import entiy.shouzhi;import java.io.*;
    import java.sql.Date;
    import java.sql.Timestamp;
    import java.util.*;
    public class Buinessdemos {
        
    private List<shouzhi>  shouzhi=new ArrayList<shouzhi>();
    public  static SessionFactory sessionFactory;
      static{
      //根据默认位置的
      try {
    org.hibernate.cfg.Configuration config=new Configuration();
    //         config.addClass(Shouzhi.class);
    //config.addClass(Shouzhi.class);
    //创建一个sessionfactory实例
    sessionFactory=config.configure("/action/hibernate.cfg.xml").buildSessionFactory();
    } catch (MappingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (HibernateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      }public  List findAllshouzhi(ServletContext context,OutputStream out)throws Exception
     {
     //通过sessionfactory的opensession方法得到一个session对象
    Session session=sessionFactory.openSession(); 
    Transaction tr=null;
    try {
    //开启当前session的事务
    tr = session.beginTransaction();
    //3.2版本的做法用  from对象
     shouzhi= (List<shouzhi> ) session.createQuery("from shouzhi");
    //  for (Iterator it = shouzhi.iterator(); it.hasNext();)
    //  {
    //  
    //  } 
    //  Iterator it = shouzhi.iterator();
    //  while(it.hasNext())
    //  {
    //             System.out.println();
    //  }
     for(shouzhi x:shouzhi)
     {
     System.out.println(x.getId()); 
     }
    } catch (Exception e) {
    //如果tr为null,则事务回滚
    if(tr!=null)
     tr.rollback();
    throw e;
    }
         finally {
         // No matter what, close the session
         session.close();
       }
         return shouzhi;
     }}
      

  4.   

    org.dom4j.DocumentException: http://hibernate.sourceforge.net/hibernate-mapping-3.2.dtd你 hibernte.cfg.xml的dtd怎么是 3.0的,也换成3.2的试试。
      

  5.   

    <!DOCTYPE hibernate-configuration PUBLIC 
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
    应该就是这里问题了吧
      

  6.   

    Could not parse configuration: /action/hibernate.cfg.xml试过了还是抛这个异常
      

  7.   

     <mapping resource="action/shouzhi.hbm.xml"/>  
    这个里面的用的3.2.dtd 就无法解析shouzhi.hbm.xml了 
    Could not parse mapping document from resource action/shouzhi.hbm.xml 
      

  8.   

    我把版本改成3.2了。
    但是它又抛出这个错误了,Could not parse configuration: /action/hibernate.cfg.xml 
      

  9.   

    <mapping resource="action/shouzhi.hbm.xml"/>  
    是全路径吗
      

  10.   

    sessionFactory=config.configure("action/hibernate.cfg.xml").buildSessionFactory();看异常内容说是这个有问题
      

  11.   

    <property name="connection.username">root </property>
    弱弱地问一下  你的这些配置里 都有空格   是吗?
      

  12.   


    是相对的。这个是我工程项目下的路径
    demo3/src/action/shouzhi.hbm.xml
      

  13.   

    hibernate.cfg.xml:http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtdshouzhi.hbm.xml:http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd试试
      

  14.   


    大侠偶想问下,就是这样更换的话。我用myeclipse添加的是3.2JAR。向下兼容没有问题么?
      

  15.   

    给你个调试方法:删将xml删空,运行看看增加顶级元素,运行看看
    直到找到增加什么引起异常。
      

  16.   

    偶把DTD都改成了3.0
    现在抛错是这个
    Could not find a getter for Inname in class action.shouzhi是不是我的映射的字段有问题?
    use account;
    create table shouzhi
    (
       id int primary key AUTO_INCREMENT
       ,Inname varchar(30)
       ,re varchar(550)
       ,payfor float 
       ,times  datetime
       ,Uname varchar(30),
       foreign key(Uname) references users(Uname)
       
    )用MYSQL创建的脚本是这个
      

  17.   

    public class shouzhi implements Serializable{
       


    private int id;
    private String Innmae;
    private String re;
    private float payfor;
    private  String Uname;
        private  Date birthday;
        public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getInnmae() {
    return Innmae;
    }
    public void setInnmae(String innmae) {
    Innmae = innmae;
    }
    public String getRe() {
    return re;
    }
    public void setRe(String re) {
    this.re = re;
    }
    public float getPayfor() {
    return payfor;
    }
    public void setPayfor(float payfor) {
    this.payfor = payfor;
    }
    public String getUname() {
    return Uname;
    }
    public void setUname(String uname) {
    Uname = uname;
    }
    public Date getBirthday() {
    return birthday;
    }
    public void setBirthday(Date birthday) {
    this.birthday = birthday;
    }


        
    }
    shouzhi类中是这样写的
      

  18.   

    <property name="Inname"column="inname"type="string"/>
    你不会是手写的吧
    命名不太规范啊    
      

  19.   

    private  String Uname; 没配这个字段吧 上面的没错  你的bean里面Inname是大写的
    命名不太规范
      

  20.   

    这个shouzhi.hbm.xml确实是我根据书上实例修改的。额,眼花了。20楼大虾的意思是不是说
    <property name="Inname"column="inname"type="string"/> column的值首字母改成与列名对应的大写 ?
      

  21.   

    应该是shouzhi.hbm.xml的错误class name="entiy.shouzhi"类名首字母怎么是小写?如果不行,就把
    type="int"
    type="strng"
    type="float"
    改为
    type="java.lang.Integer"
    type="java.lang.String"
    type="java.lang.Float"
    eclipse自动生成的就是这种格式的
      

  22.   

    别手写,出错的几率太高了,错了还不知道改哪。
    搞个插件,鼠标一点mapping就出来了。有特殊的要求的时候再手动改。
      

  23.   

    晕死,这个问题解决。不再报关于hibernate的错误了貌似我写的servlet有点问题。
      

  24.   


    刚学,能否麻烦大虾推荐一个?对于eclipse的插件安装还不是很熟悉
      

  25.   

    换MyEclipse吧
    楼主命名规范以后一定要注意哦
      

  26.   

    什么插件都不需要,myEclipse7.1都可以自动生成了,何况你用的是 8.0
    切换到-->database Exeplorer模式,
      

  27.   


    大虾,我就是用MyEclipse 8.0的书好了好几天,基本没有啥感觉在闷下去要崩溃了,憋不住实际操作了下书上实例!恩,恩。命令规范我已经改正过来
      

  28.   

    没用过myEclipse,我在eclipse下用的Hibernate synchronizer。有点小bug。
    楼上说有现成的,你可试试。