[code=Java]
<?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/flowershop</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="myeclipse.connection.profile">flowerconnect</property>
<mapping resource="User.hbm.xml" />
         <mapping resource="Kind.hbm.xml"/>
         <mapping resource="Flower.hbm.xml"/>
   
   
</session-factory></hibernate-configuration>
[/code]
把上面hibernate的配置文件里的 <mapping resource="Flower.hbm.xml"/>删除就可以正常的连接数据库,要是有那句的话,所有的数据库操作都不会成功。请高手帮忙看下!
Flower.hbm.xml配置文件<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.alavu.model">
<!-- 每个class元素映射一个持久化类 -->
<class name="Flower" table="flower">
<id name="flowerId" column="flowerId">
<generator class="identity"/>
</id>
<property name="flowerName" column="flowerName"/>
<property name="flowerPrice" column="flowerPrice"/>
<property name="flowerStock" column="flowerStock"/>
<property name="flowerDiscout" column="flowerDiscount"/>
<property name="flowerPicture" column="flowerPicture"/>
<property name="flowerDesc" column="flowerDesc"/>
<many-to-one name="kind" column="kind_Id" />

</class>
</hibernate-mapping>Flower.java源码package cn.alavu.model;public class Flower {
    private int flowerId;
    private String flowerName;
    private float flowerPrice;
    private int flowerStock;
    private String flowerDesc;
    private float flowerDiscount;
    private String flowerPicture;
    private Kind kind;
    
    public Flower()
    {}
    public void SetFlowerId(int flowerId)
    {
     this.flowerId = flowerId;
    }
    public void setFlowerName(String flowerName)
    {
     this.flowerName = flowerName;
    }
    public void setFlowerPrice(float flowerPrice)
    {
     this.flowerPrice = flowerPrice;
    }
    public void setFlowerStock(int flowerStock)
    {
     this.flowerStock = flowerStock;
    }
    public void setFlowerDesc(String flowerDesc)
    {
     this.flowerDesc = flowerDesc;
    }
    public void setFlowerDiscount(float flowerDiscount)
    {
     this.flowerDiscount = flowerDiscount;
    }
    public void setFlowerPicture(String flowerPicture)
    {
     this.flowerPicture = flowerPicture;
    }
    public void setKind(Kind kind)
    {
     this.kind = kind;
    }
    public int getFlowerId()
    {
         return flowerId;
    }
    public String getFlowerName()
    {
     return flowerName;
    }
    public float getFlowerPrice()
    {
     return flowerPrice;
    }
    public int getFlowerStock()
    {
     return flowerStock;
    }
    public String getFlowerDesc()
    {
     return flowerDesc;
    }
    public float getFlowerDiscount()
    {
     return flowerDiscount;
    }
    public Kind getKind()
    {
     return kind;
    }
    public String getFlowerPicture()
    {
     return flowerPicture;
    }
}数据库
CREATE TABLE `flower` (
  `flowerId` int(10) unsigned NOT NULL auto_increment,
  `flowerName` varchar(45) NOT NULL,
  `flowerPrice` float NOT NULL,
  `flowerStock` int(10) unsigned NOT NULL,
  `flowerDiscount` float NOT NULL,
  `flowerPicture` varchar(45) NOT NULL,
  `kind_Id` int(10) unsigned NOT NULL,
  `flowerDesc` varchar(255) NOT NULL,
  PRIMARY KEY  (`flowerId`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
错误报告:
javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
cn.alavu.util.EncodeServlet.process(EncodeServlet.java:13)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
cn.alavu.service.ServiceImpl.createKind(ServiceImpl.java:76)
cn.alavu.action.KindAddAction.execute(KindAddAction.java:45)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
cn.alavu.util.EncodeServlet.process(EncodeServlet.java:13)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
请大家帮忙看下

解决方案 »

  1.   

    检查下ServiceImpl.java的76行
    和KindAddAction.java的45行有空指针异常
      

  2.   

     <mapping resource="Flower.hbm.xml"/>
    看下Flower.hbm.xml 这个文件的引用路径对不对
      

  3.   

    cn.alavu.service.ServiceImpl.createKind(ServiceImpl.java:76) 
    查看下那个对象是null就知道出的什么错了
      

  4.   

    路径和Kind.hbm.xml的一样啊,就应该是连接数据库的时候出错了,应该是配置文件有问题,只要加了这句<mapping resource="Flower.hbm.xml"/>就其他的数据库操作也就不可以了,不知道为什么!还有就是我把这句删除后,修改Kind.hbm.xml<?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.alavu.model">
    <!-- 每个class元素映射一个持久化类 -->
    <class name="Kind" table="kind">
    <id name="kindId">
    <generator class="identity"/>
    </id>
    <property name="kindName"/>
    <property name="kindDesc"/>
    <set name="flowers">
     <key column="kind_Id"/>            
     <one-to-many class="Flower"/>      
    </set>   
      红色部分为新增的,也就是修改了的。要是增加这部分,也会导致连不到数据库                          

    </class>
    </hibernate-mapping>Kind.javapackage cn.alavu.model;
    import java.util.*;public class Kind {
       private int kindId;
       private String kindName;
       private String kindDesc;
       private Set<Flower> flowers = new HashSet<Flower>();
       public Kind()
       {}
       public void setKindId(int kindId)
       {
       this.kindId = kindId;
       }
       public void setKindName(String kindName)
       {
       this.kindName = kindName;
       }
       public void setKindDesc(String kindDesc)
       {
       this.kindDesc = kindDesc;
       }
       public void setFlowers(Set<Flower> flowers)
       {
       this.flowers = flowers;
       }
       public int getKindId()
       {
       return kindId;
       }
       public String getKindName()
       {
       return kindName;
       }
       public String getKindDesc()
       {
       return kindDesc;
       }
       public Set<Flower> getFlowers()
       {
       return flowers;
       }
    }
      

  5.   

    cn.alavu.service.ServiceImpl.createKind(ServiceImpl.java:76) 
    很明显了。
      

  6.   

    不是那的问题啊,只要我把<mapping resource=" Flower.hbm.xml"/>删除的话,我其他的数据库操作还是可以的,但是要是有这句的话,我其他类的操作也不成功,也就是没有链接上数据库,请高手们帮忙分析分析啊
      

  7.   

        <many-to-one name="kind" column="kind_Id" />  这个里面是不是要加个对应的类?
        
        <many-to-one name="kind" class="Kind" column="kind_Id" />
        
       我写的级联操作里面是要加的!          
      

  8.   

    <generator class="identity"/>你要是用mysql的话,最好还是把identity改成native
    试试吧……
      

  9.   

    另外主要关注的还是下面两个异常的位置,你可以把方法贴出来吗?root cause //因其根源
    java.lang.NullPointerException //空指针
    cn.alavu.service.ServiceImpl.createKind(ServiceImpl.java:76) //方法位置
    cn.alavu.action.KindAddAction.execute(KindAddAction.java:45) 
      

  10.   

    现在发现问题是只要添加了<mapping resource=" Flower.hbm.xml"/>这个的话,sess = HibernateSessionFactory.getSession()这个sess就获取不到session,也就是空啊,但是要是没有这个的话,就可以获取的到session!后来就认为是Flower.hbm.xml的问题,减少里面的属性,数据库也删除相应的属性,还是不行,请高手帮忙看下,急!谢谢
    修改后的Flower.hbm.xml<?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.alavu.model">
    <!-- 每个class元素映射一个持久化类 -->
    <class name="Flower" table="flower">
    <id name="flowerId"/>
    <property name="flowerName"/>
       </class>
    </hibernate-mapping>Flower.javapackage cn.alavu.model;public class Flower {
        private int flowerId;
        private String flowerName;
      /*  private float flowerPrice;
        private int flowerStock;
        private String flowerDesc;
        private float flowerDiscount;
        private String flowerPicture;
        private Kind kind;
        
       */
        public void SetFlowerId(int flowerId)
        {
         this.flowerId = flowerId;
        }
        public void setFlowerName(String flowerName)
        {
         this.flowerName = flowerName;
        }
       
       public int getFlowerId()
        {
             return flowerId;
        }
        public String getFlowerName()
        {
         return flowerName;
        }  
        
    }