hibernate 插入多条记录问题 报错Could not execute JDBC batch update 困惑我2天了!

我做一个简单的例子 就是 客户与订单的关系
JAVA 代码:
package com.young.customer.pojo;

import java.io.Serializable;
/**
* Customers generated by MyEclipse - Hibernate Tools
*/

public class Customers implements java.io.Serializable
{

// Fields
private long customerId;
private String name;
// Constructors

/** minimal constructor */
public Customers(String name)
{
this.name = name;
}
public long getCustomerId()
{
return this.customerId;
}

public void setCustomerId(long customerId)
{
this.customerId = customerId;
}

public String getName()
{
return this.name;
}

public void setName(String name)
{
this.name = name;
}
}

package com.young.orders.domain;

import com.young.customer.domain.Customers;

/**
* AbstractOrders generated by MyEclipse - Hibernate Tools
*/

public class Orders implements java.io.Serializable
{

// Fields

private long oid;

private Customers customer;

private String orderNumber;

// Constructors
/** full constructor */
public Orders(Customers customer, String orderNumber)
{
this.customer = customer;
this.orderNumber = orderNumber;
}
public Customers getCustomer()
{
return customer;
}
public void setCustomer(Customers customer)
{
this.customer = customer;
}

public long getOid()
{
return this.oid;
}

public void setOid(long oid)
{
this.oid = oid;
}

public String getOrderNumber()
{
return this.orderNumber;
}

public void setOrderNumber(String orderNumber)
{
this.orderNumber = orderNumber;
}
}

customers的配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.young.customer.pojo.Customers" table="CUSTOMERS" schema="SCOTT">
<id name="customerId" type="long">
<column name="CUSTOMER_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_CUSTOMERID</param>
</generator>
</id>
<property name="name" type="string">
<column name="NAME" length="20" not-null="true" />
</property>
</class>
</hibernate-mapping>

order的配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.young.orders.pojo.Orders" table="ORDERS" schema="SCOTT">
<id name="oid" type="long">
<column name="OID" precision="12" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_ORDERSID</param>
</generator>
</id>
<property name="orderNumber" type="string">
<column name="ORDER_NUMBER" length="12" />
</property>
<many-to-one name="customer"
column="CUSTOMER_ID"
class="com.young.customer.pojo.Customers"
not-null="true"
/>
</class>
</hibernate-mapping>

表脚本:
create table CUSTOMERS
(
CUSTOMOER_ID NUMBER(22) PRIMAY KEY,
NAME VARCHAR2(20)
)
create table ORDERS
(
OID NUMBER(12) PRIMAY KEY,
ORDER_NUMBER VARCHAR2(12),
CUSTOMOER_ID NUMBER(22)
)
alter table ORDERS
add constraint FK_ORDERS foreign key(CUSTOMOER_ID) references CUSTOMERS(CUSTOMOER_ID)
序列都是建立好的 这个没有问题 我测试过

package com.young.orders.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.young.basefactory.SessionFactory;
import com.young.customer.pojo.Customers;
import com.young.orders.pojo.Orders;

public class OrdersDaoImpl implements OrdersDao
{
private Session customer_session;
private Transaction customer_tran;

public static void main(String[] args)
{
customer_session = SessionFactory.currentSession();
//SessionFactory.currentSession(); 是已经写好了的静态方法没有问题
//如果只插入customers 是没有问题的,如果同时插入customers 和order
//就报错 Could not execute JDBC batch update
try
{
customer_tran = customer_session.beginTransaction();
Customers customers = new Customers("jerry");
customer_session.save(customers);

Orders orders1 = new Orders(customers,"Jerry_Order01");
Orders orders2 = new Orders(customers,"Jerry_Order02");

customer_session.save(orders1);
customer_session.save(orders2);

customer_tran.commit();
SessionFactory.closeSession();
}
catch(Exception ex)
{
System.out.println(ex);
}
System.out.println("OK!");
}
}
//SessionFactory.currentSession(); 是已经写好了的静态方法没有问题
//如果只插入customers 是没有问题的,如果同时插入customers 和orders1
//orders2
//就报错 Could not execute JDBC batch update

请各位高手指点下啊!
[5747 byte] By [JerryYoungx-阿秋] at [2008-1-6]
# 1
Orders orders2 = new Orders(customers,"Jerry_Order02");
customer_session.save(orders2);
这两句去掉.试试.
princeliuxj-雨扬 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 2
还是 不行啊 一样报错Could not execute JDBC batch update

但是 如果只写
Customers customers = new Customers("jerry");
customer_session.save(customers);
就可以!
JerryYoungx-阿秋 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 3
这个是我去掉 Orders orders2 = new Orders(customers,"Jerry_Order02");
customer_session.save(orders2);

控制台输出的SQL:
Hibernate: select SEQ_CUSTOMERID.nextval from dual
Hibernate: select SEQ_ORDERSID.nextval from dual
Hibernate: insert into SCOTT.CUSTOMERS (NAME, CUSTOMER_ID) values (?, ?)
Hibernate: insert into SCOTT.ORDERS (ORDER_NUMBER, CUSTOMER_ID, OID) values (?, ?, ?)
JerryYoungx-阿秋 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 4
在customers加一个set,然后定义一下inverse="true"
wangx1949 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 5
还是不行啊 我按照楼上的
在Customers 类加了个
private Set order = new HashSet();
在配置文件中加入了
<set name="order" inverse="true"
cascade="save-update">
<key column="CUSTOMER_ID"/>
<one-to-many class="com.young.orders.domain.Orders"/>
</set>
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

我都快晕死了 到底怎么会事啊 我看书上例子都是这么写的!
JerryYoungx-阿秋 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 6
配置文件里有hibernate批处理的设置,设成50试试
keerqin at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 7
楼上请问 请配置文件批处理怎么设置 我是小鸟!不知道啊!
JerryYoungx-阿秋 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...