首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一对多,安插的时候报错Could not execute JDBC batch update,请求帮忙

2011-12-02 
一对多,插入的时候报错Could not execute JDBC batch update,请求帮忙!hibernate-mappingclassname o

一对多,插入的时候报错Could not execute JDBC batch update,请求帮忙!
<hibernate-mapping>
        <class   name= "org.qsm.Major "   table= "major ">
                <id   name= "id "   type= "java.lang.String ">
                        <column   name= "id "   length= "2 "   />
                        <generator   class= "assigned "   />
                </id>
                <property   name= "name "   type= "java.lang.String ">
                        <column   name= "name "   length= "20 "   not-null= "true "   />
                </property>
                <property   name= "shortname "   type= "java.lang.String ">
                        <column   name= "shortname "   length= "10 "   not-null= "true "   />
                </property>
                <property   name= "department "   type= "java.lang.String ">
                        <column   name= "department "   length= "4 "   not-null= "true "   />
                </property>
                <set   name= "classeses "   inverse= "true ">
                        <key>
                                <column   name= "majorid "   length= "2 "   not-null= "true "   />
                        </key>
                        <one-to-many   class= "org.qsm.Classes "   />
                </set>
        </class>
</hibernate-mapping>

<hibernate-mapping>
        <class   name= "org.qsm.Classes "   table= "classes ">
                <id   name= "id "   type= "java.lang.Integer ">
                        <column   name= "id "   />
                        <generator   class= "native "   />
                </id>
                <many-to-one   name= "major "   class= "org.qsm.Major "   fetch= "select ">


                        <column   name= "majorid "   length= "2 "   not-null= "true "   />
                </many-to-one>
                <property   name= "name "   type= "java.lang.String ">
                        <column   name= "name "   length= "10 "   not-null= "true "   />
                </property>
        </class>
</hibernate-mapping>

public   class   Major   implements   java.io.Serializable{
        private   static   final   long   serialVersionUID=7049254736951558367L;
        private   String   id;
        private   String   name;
        private   String   shortname;
        private   String   department;
        private   Set   classeses=new   HashSet(0);
        public   String   getId(){
                return   this.id;
        }
        public   void   setId(String   id){
                this.id=id;
        }
        public   String   getName(){
                return   this.name;
        }
        public   void   setName(String   name){
                this.name=name;
        }
        public   String   getShortname(){
                return   this.shortname;
        }
        public   void   setShortname(String   shortname){
                this.shortname=shortname;
        }
        public   String   getDepartment(){
                return   this.department;
        }
        public   void   setDepartment(String   department){
                this.department=department;
        }
        public   Set   getClasseses(){
                return   this.classeses;
        }
        public   void   setClasseses(Set   classeses){
                this.classeses=classeses;
        }
}

public   class   Classes   implements   java.io.Serializable{
        private   static   final   long   serialVersionUID=6183334115113485272L;
        private   Integer   id;


        private   Major   major;
        private   String   name;
        public   Integer   getId(){
                return   this.id;
        }
        public   void   setId(Integer   id){
                this.id=id;
        }
        public   Major   getMajor(){
                return   this.major;
        }
        public   void   setMajor(Major   major){
                this.major=major;
        }
        public   String   getName(){
                return   this.name;
        }
        public   void   setName(String   name){
                this.name=name;
        }
}

//测试语句
                Major   m=new   Major();
                Classes   c=new   Classes();
                m.setId( "10 ");
                m.setName( "hhhhhh ");
                m.setShortname( "dddddd ");
                m.setDepartment( "00001 ");
                c.setName( "计科041 ");
                c.setMajor(m);
                m.getClasseses().add(c);
                Session   session=HibernateSessionFactory.getSession();  
                Transaction   tran=this.session.beginTransaction();
                session.save(m);
                tran.commit();
                session.close();


数据库脚本
CREATE   TABLE   `classes`   (
    `id`   int(11)   NOT   NULL   auto_increment,
    `name`   varchar(10)   NOT   NULL   default   ' ',
    `majorid`   varchar(2)   NOT   NULL   default   ' ',
    PRIMARY   KEY     (`id`),
    KEY   `pk_majorid`   (`majorid`),
    CONSTRAINT   `pk_majorid`   FOREIGN   KEY   (`majorid`)   REFERENCES   `major`   (`id`)
)   ENGINE=InnoDB   DEFAULT   CHARSET=gbk;

CREATE   TABLE   `major`   (
    `id`   varchar(2)   NOT   NULL   default   ' ',
    `name`   varchar(20)   NOT   NULL   default   ' ',
    `shortname`   varchar(10)   NOT   NULL   default   ' ',
    `department`   varchar(4)   NOT   NULL   default   ' ',


    PRIMARY   KEY     (`id`)
)   ENGINE=InnoDB   DEFAULT   CHARSET=gbk;

[解决办法]
晕 自问自答了
[解决办法]
这是你两张表之间及联保存,更新!你要的不就是这样的效果吗?
[解决办法]
你加了cascade= "save-update " 就是告诉hibernate 当你保存org.qsm.Major对象时级连保存和他关联的set中的对象

热点排行