我想用更新级联删除DB(MySQL)中的记录。
在数据库上有与日计划相关的日计划和一些持续时间计划。我想更新这一天计划的持续时间列表。
实施例
初始化;
...
DayPlan dayPlan = new DayPlan();
Set<DurationPlan> list = new HashSet<DurationPlan>();
...
更新的准备工作;
...
durationPlan = new DurationPlan(dayPlan, x, y, z);
list.add(durationPlan);
dayPlan.setDURATION_PLANS(list);
...
使用Hibernate-session更新流程;
...
session.saveOrUpdate(dayPlan);
...
DurationPlan hibernate-mapping;
<class name="planManagement.DurationPlan" table="DURATIONPLAN">
<id name="DURATION_PLAN_ID" type="int">
<column name="DURATION_PLAN_ID" />
<generator class="native" />
</id>
<many-to-one name="DAY_PLAN" class="planManagement.DayPlan" lazy="false" fetch="join">
<column name="DAY_PLAN_ID" not-null="true"/>
</many-to-one>
...
</class>
DayPlan hibernate-mapping;
<class name="planManagement.DayPlan" table="DAYPLAN">
<id name="DAY_PLAN_ID" type="int">
<column name="DAY_PLAN_ID" />
<generator class="native" />
</id>
<set name="DURATION_PLANS" table="DURATIONPLAN" inverse="true" cascade="all" lazy="true" fetch="select">
<key>
<column name="DAY_PLAN_ID" not-null="true" />
</key>
<one-to-many class="planManagement.DurationPlan" />
</set>
...
</class>
所有反馈意见都赞赏!
答案 0 :(得分:1)
这里的问题是,hibernate将如何找到需要删除的记录?当您致电session.saveOrUpdate(dayPlan);
时,其中dayPlan
将包含仅包含两个对象的duration
列表,即a,b(a(已更新),b(未更新)。)根据您的要求'需要被删除但是hibernate将如何知道'c'需要被删除。