有5张表   
nuser表代表用户表,id为主键,自增.其中有个username的字段.   
shenfenzheng代表身份证表.id为主键,自增.里面有shenfenzhenghao字段代表身份证号,userid代表关联到nuser表的id,外键,   
还有个dingdan表代表定单表,id为主键,自增.里面有个dingdanhao字段,有个userid字段关联到nuser表的id,外键.   
有个chanpin表代表产品,id为主键,自增,里面有个chanpinming字段.
有个dingdan_chanpin表,id为主键,自增,里面有个dingdanid关联到dingdan表的id,有个chanpinid关联到chanpin表的id.该表做为多对多关系的连接表这个关系是nuser表和shenfenzheng表是一对一关系,nuser和dingdan是一对多关系(双向关联),  dingdan和chanpin表为多对多关联.异常日志如下:Hibernate: insert into hibernate.dingdan (userid) values (?)
Hibernate: insert into hibernate.chanpin (chanpinming) values (?)
Hibernate: insert into hibernate.chanpin (chanpinming) values (?)
Hibernate: insert into dingdan_chanpin (dingdanid, id) values (?, ?)
Hibernate: insert into dingdan_chanpin (dingdanid, id) values (?, ?)
Could not execute JDBC batch update
代码如下:
public void createDingdan(Integer userid)
{
Nuser nuser=new Nuser();
nuser.setId(userid);
Dingdan dingdan=new Dingdan();
dingdan.setNuser(nuser);

Chanpin chanpin1=new Chanpin();
chanpin1.setChanpinming("地瓜");


Chanpin chanpin2=new Chanpin();
chanpin2.setChanpinming("土豆");

dingdan.getChanpin().add(chanpin1);
dingdan.getChanpin().add(chanpin2);
System.out.println();
// save(dingdan);
Session session=CreateSession.createSession();
Transaction tx=null;
try
{
tx=session.beginTransaction();
session.save(dingdan);
session.flush();
tx.commit();
}
catch (Exception e) {
if(tx!=null)
tx.rollback();
System.out.println(e.getMessage());
}
finally
{
session.close();
}

}<class name="databasepo.Nuser" table="nuser" catalog="hibernate">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native"></generator>
        </id>
        <property name="username" type="java.lang.String">
            <column name="username" length="20" not-null="true" />
        </property>
        <one-to-one name="shenfenzheng" class="databasepo.Shenfenzheng" cascade="all" property-ref="nuser"/>
        <set name="dingdan" order-by="id" cascade="all" inverse="true">
        <key column="userid" not-null="true" />
        <one-to-many class="databasepo.Dingdan"/>
        </set>
    </class>    <class name="databasepo.Shenfenzheng" table="shenfenzheng" catalog="hibernate">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native"></generator>
        </id>
        <property name="shenfenzhenghao" type="java.lang.String">
            <column name="shenfenzhenghao" length="20" not-null="true" />
        </property>
        <many-to-one name="nuser" class="databasepo.Nuser" unique="true" column="userid"/>
    </class>    <class name="databasepo.Dingdan" table="dingdan" catalog="hibernate">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native"></generator>
        </id>
       <many-to-one name="nuser" class="databasepo.Nuser" cascade="none" column="userid">
       </many-to-one>
       <set name="chanpin" table="dingdan_chanpin" cascade="save-update" fetch="join">
       <key column="dingdanid" not-null="true"/>
       <many-to-many class="databasepo.Chanpin" column="id"/>
       </set>
    </class>    <class name="databasepo.Chanpin" table="chanpin" catalog="hibernate">
        <id name="id" type="java.lang.Long">
            <column name="id" />
            <generator class="native"></generator>
        </id>
        <property name="chanpinming" type="java.lang.String">
            <column name="chanpinming" length="50" not-null="true" />
        </property>
        <set name="dingdan" table="dingdan_chanpin" cascade="save-update" inverse="false">
        <key column="chanpinid" not-null="true"/>
        <many-to-many class="databasepo.Dingdan" column="id"/>
        </set>
    </class>POJO代码如下:
public class Nuser implements java.io.Serializable { // Fields private Integer id;
private String username;
private Shenfenzheng shenfenzheng;
private Set dingdan; // Constructors /** default constructor */
public Nuser() {
} /** full constructor */
public Nuser(String username) {
this.username = username;
} // Property accessors public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return this.username;
} public void setUsername(String username) {
this.username = username;
} public Shenfenzheng getShenfenzheng() {
return shenfenzheng;
} public void setShenfenzheng(Shenfenzheng shenfenzheng) {
this.shenfenzheng = shenfenzheng;
} public Set getDingdan() {
if(dingdan==null)
dingdan=new HashSet();
return dingdan;
} public void setDingdan(Set dingdan) {
this.dingdan = dingdan;
}
}
public class Shenfenzheng implements java.io.Serializable { // Fields private Integer id;
private Long userid;
private String shenfenzhenghao;
private Nuser nuser; // Constructors /** default constructor */
public Shenfenzheng() {
} /** full constructor */
public Shenfenzheng(Long userid, String shenfenzhenghao) {
this.userid = userid;
this.shenfenzhenghao = shenfenzhenghao;
} // Property accessors public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public Long getUserid() {
return this.userid;
} public void setUserid(Long userid) {
this.userid = userid;
} public String getShenfenzhenghao() {
return this.shenfenzhenghao;
} public void setShenfenzhenghao(String shenfenzhenghao) {
this.shenfenzhenghao = shenfenzhenghao;
} public Nuser getNuser() {
return nuser;
} public void setNuser(Nuser nuser) {
this.nuser = nuser;
}
}
public class Dingdan implements java.io.Serializable { // Fields private Integer id;
private Long userid;
private Nuser nuser;
private Set chanpin; // Constructors /** default constructor */
public Dingdan() {
} /** full constructor */
public Dingdan(Long userid) {
this.userid = userid;
} // Property accessors public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public Long getUserid() {
return this.userid;
} public void setUserid(Long userid) {
this.userid = userid;
} public Nuser getNuser() {
return nuser;
} public void setNuser(Nuser nuser) {
this.nuser = nuser;
} public Set getChanpin() {
if(chanpin==null)
chanpin=new HashSet();
return chanpin;
} public void setChanpin(Set chanpin) {
this.chanpin = chanpin;
}


}
public class Chanpin implements java.io.Serializable { // Fields private Long id;
private String chanpinming;
private Set dingdan; // Constructors /** default constructor */
public Chanpin() {
} /** full constructor */
public Chanpin(String chanpinming) {
this.chanpinming = chanpinming;
} // Property accessors public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public String getChanpinming() {
return this.chanpinming;
} public void setChanpinming(String chanpinming) {
this.chanpinming = chanpinming;
} public Set getDingdan() {
if(dingdan==null)
dingdan=new HashSet();
return dingdan;
} public void setDingdan(Set dingdan) {
this.dingdan = dingdan;
}
}

解决方案 »

  1.   

    <class name="databasepo.Dingdan" table="dingdan" catalog="hibernate">
             <id name="id" type="java.lang.Integer">
                 <column name="id" />
                 <generator class="native"> </generator>
             </id>
            <many-to-one name="nuser" class="databasepo.Nuser" cascade="none" column="userid">
            </many-to-one>
            <set name="chanpin" table="dingdan_chanpin" cascade="save-update" fetch="join">
            <key column="dingdanid" not-null="true"/>
            <many-to-many class="databasepo.Chanpin" column="id"/>
            </set>
         </class>
    dynamic-update="false"
    dynamic-insert="false"