hibernate遇到郁闷问题了.删除不行.急啊.
有3张表
nuser表代表用户表,id为主键,自增.其中有个username的字段.
shenfenzheng代表身份证表.id为主键,自增.里面有shenfenzhenghao字段代表身份证号,userid代表关联到nuser表的id,外键,
还有个dingdan表代表定单表,id为主键,自增.里面有个dingdanhao字段,有个userid字段关联到nuser表的id,外键.
这个关系是nuser表和shenfenzheng表是一对一关系,nuser和dingdan是一对多关系,
程序代码如下
//删除的类
public class DeleteUser
{
public void deleteUser(Integer id)
{
Session session=CreateSession.createSession();
Nuser nuser=(Nuser) session.get(Nuser.class, id);
//Hibernate.initialize(nuser.getDingdan());
Transaction tx=null;
try
{
tx=session.beginTransaction();
session.delete(nuser);
session.flush();
tx.commit();
}
catch(Exception e)
{
if(tx!=null)
tx.rollback();
System.out.println(e.getMessage());
}
finally{
session.close();
}
}
}
<hibernate-mapping>
<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="delete">
<key column="userid"/>
<one-to-many class="databasepo.Dingdan"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="databasepo.Dingdan" table="dingdan" catalog="hibernate">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="userid" type="java.lang.Long">
<column name="userid" not-null="true" />
</property>
</class>
</hibernate-mapping>
<hibernate-mapping>
<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>
</hibernate-mapping>
执行的时候删除数据的日志如下
Hibernate: select nuser0_.id as id0_1_, nuser0_.username as username0_1_, shenfenzhe1_.id as id2_0_, shenfenzhe1_.shenfenzhenghao as shenfenz2_2_0_, shenfenzhe1_.userid as userid2_0_ from hibernate.nuser nuser0_ left outer join hibernate.shenfenzheng shenfenzhe1_ on nuser0_.id=shenfenzhe1_.userid where nuser0_.id=?
Hibernate: select dingdan0_.userid as userid1_, dingdan0_.id as id1_, dingdan0_.id as id1_0_, dingdan0_.userid as userid1_0_ from hibernate.dingdan dingdan0_ where dingdan0_.userid=? order by dingdan0_.id
Hibernate: update hibernate.dingdan set userid=null where userid=?
Could not execute JDBC batch update
Could not execute JDBC batch update.这个是怎么回事呢?