有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.这个是怎么回事呢?
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.这个是怎么回事呢?
解决方案 »
- java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
- 如何把U盘里面的数据显示在浏览器里面。
- 连接本地oracle异常,求解决
- select 下拉框的问题??
- JSP中如何取得上一层目录?
- 小弟新学网页制作,请哪么大哥,介绍一下学习的步骤
- 天哪,难道就没有人遇到并解决了这个错误?????????救命啊!!!!!!!!!!!!!!!!!!!!
- 如何让我的WEB应用源代码不让别人看到?
- 我使用jspSmartUploadl来上传文件,但如何上传的同时又重新更换文件名呢?
- jsp中怎么用session做用户验证?
- JSP数据库表格操作
- 请问一下我的这些代码,为什么会出现空异常?
<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"> // <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> <key column="userid"/>
<one-to-many class="databasepo.Dingdan"/>
</set>
</class>
红色delete最好换成all ,因为,如果用户都不存在了,身份证与订单也就没有了
<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"> // <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> <key column="userid"/>
<one-to-many class="databasepo.Dingdan"/>
</set>
</class>
红色delete最好换成all ,因为,如果用户都不存在了,身份证与订单也就没有了
<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> 红色delete最好换成all ,因为,如果用户都不存在了,身份证与订单也就没有了
上面那个复制错了
你在这几个*.hbm.xml文件中的一对多,一对一中加上lazy="false"就可以了
这样写的吗?