1
我有一個實體,稱爲DashboardPage
包含的DashboardPageItem
列表,當我嘗試運行此代碼:刪除刪除了關聯對象,而在數據庫中刪除它
for(DashboardPage dp : dashboard.getPages()){
if(dp.getIndex() == dashboardPage.getIndex()){
dp.getDashboardPageItems().clear();
Iterator<DashboardPageItem> itDashboardPageItem = dp.getDashboardPageItems().iterator();
while (itDashboardPageItem.hasNext()) {
DashboardPageItem dpi = itDashboardPageItem.next();
itDashboardPageItem.remove();
}
}
}
我收到此錯誤信息:
deleted object would be re-saved by cascade (remove deleted object from associations): [com.dashboard.entity.DashboardPage#22]
當我搜索到類似的問題時,我發現我必須使用session.delete()
,但是這會從數據庫中刪除對象,我只想從列表中刪除它。
這是我班HBM:
DashboardPage:
<class name="DashboardPage" table="t_dashboard_page_dpa">
<id name="id" column="dpa_id">
<generator class="native"/>
</id>
<property name="name" column="dpa_name"/>
<property name="index" column="dpa_index"/>
<property name="model" column="dpa_model"/>
<many-to-one name="dashboard"
column="fk_das_id"
foreign-key="das_id"
not-null="false"
lazy="false"/>
<bag table="t_dashboard_page_item_dpi" name="dashboardPageItems" inverse="true" lazy="true" cascade="all,delete-orphan">
<key column="fk_dpa_id" not-null="true" unique="false" foreign-key="dpa_id"/>
<one-to-many class="com.lomaco.cloud.DashboardPageItem"></one-to-many>
</bag>
</class>
DashboardPageItem:
<class name="DashboardPageItem" table="t_dashboard_page_item_dpi">
<id name="id" column="dpi_id">
<generator class="native"/>
</id>
<property name="position" column="dpi_position"/>
<many-to-one name="dashboardPage"
column="fk_dpa_id"
foreign-key="dpa_id"
not-null="false"
lazy="false"
cascade="all"/>
<many-to-one name="widget"
column="fk_wid_id"
foreign-key="wid_id"
not-null="false"
lazy="false"/>
</class>
我怎樣才能解決這個問題?
編輯:
這個代碼是剛剛從我在做什麼的一部分,所以我不希望影響的變化我做的數據庫,但在另一部分我想打電話給session.save(dashboard)
這將保存我所做的所有修改。
在這種情況下,如果我調用session.saveOrUpdate(儀表板),刪除將不起作用。 –
我明白了。根據你的帖子我雖然你只是想從內存中刪除而不是從數據庫 –
是的,我試圖從列表中刪除它,然後我可以保存對「儀表板」對象所做的所有更改。 –