hibernate delete 10
一对多的删除其中room是主表,visitor是子表Room.hbm.xml<?xmlversion="1.0"?><!DOCTYPEhibernate-mappingP...
一对多的删除
其中room是主表, visitor是子表
Room.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="src.com.tcl.oneToMany.model">
<class name="Room" table="room" >
<id name="id" column="id" unsaved-value="0">
<generator class="native"/>
</id>
<property name="roomCode">
<column name="room_code" />
</property>
<property name="bedCode">
<column name="bed_code"></column>
</property>
<!-- inverse 是否放弃对级联对象的控制 默认false不放弃控制 -->
<set name="visitor" cascade="all" inverse="false" lazy="true">
<key column="visitor_id"></key>
<one-to-many class="Visitor"/>
</set>
</class>
</hibernate-mapping>
Visitor.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="src.com.tcl.oneToMany.model">
<class name="Visitor" table="visitor">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name">
<column name="v_name" />
</property>
<property name="sex">
<column name="v_sex"></column>
</property>
</class>
</hibernate-mapping>
下面是java代码 删除方法
public class roomAndVisitor {
public static void main(String[] args) {
delet();
//findObject();
}
static void delet(){
Session s = HibernateUtil.getSeesion();
Transaction tx = s.beginTransaction();
Room r = new Room();
r.setId(1);
s.delete(r);
tx.commit();
s.close();
}
}
执行后严重: Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61) 展开
其中room是主表, visitor是子表
Room.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="src.com.tcl.oneToMany.model">
<class name="Room" table="room" >
<id name="id" column="id" unsaved-value="0">
<generator class="native"/>
</id>
<property name="roomCode">
<column name="room_code" />
</property>
<property name="bedCode">
<column name="bed_code"></column>
</property>
<!-- inverse 是否放弃对级联对象的控制 默认false不放弃控制 -->
<set name="visitor" cascade="all" inverse="false" lazy="true">
<key column="visitor_id"></key>
<one-to-many class="Visitor"/>
</set>
</class>
</hibernate-mapping>
Visitor.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="src.com.tcl.oneToMany.model">
<class name="Visitor" table="visitor">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name">
<column name="v_name" />
</property>
<property name="sex">
<column name="v_sex"></column>
</property>
</class>
</hibernate-mapping>
下面是java代码 删除方法
public class roomAndVisitor {
public static void main(String[] args) {
delet();
//findObject();
}
static void delet(){
Session s = HibernateUtil.getSeesion();
Transaction tx = s.beginTransaction();
Room r = new Room();
r.setId(1);
s.delete(r);
tx.commit();
s.close();
}
}
执行后严重: Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61) 展开
展开全部
大概看了看
<set name="visitor" cascade="all" inverse="false" lazy="true">
<key column="visitor_id"></key>
<one-to-many class="Visitor"/>
</set>
这里key应该是写的当前表被引用的key,是当前表的。
不知道你这个vistor_id有没有问题, 一般都是主表的主键被引用,
如果说你主表的确有这个vistor_id外键列,并且是引用vistor表的,
那关系纠错了,应该多对一。 而且删除也有点问题,一般都是删游离对象,不知道你把瞬时、持久、游离搞清楚没
<set name="visitor" cascade="all" inverse="false" lazy="true">
<key column="visitor_id"></key>
<one-to-many class="Visitor"/>
</set>
这里key应该是写的当前表被引用的key,是当前表的。
不知道你这个vistor_id有没有问题, 一般都是主表的主键被引用,
如果说你主表的确有这个vistor_id外键列,并且是引用vistor表的,
那关系纠错了,应该多对一。 而且删除也有点问题,一般都是删游离对象,不知道你把瞬时、持久、游离搞清楚没
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询