我有2個域類。 ParentDomain和Section。級聯更新未觸發
class ParentDomain {
String description
List sections
static hasMany = [sections:Section]
}
class Section {
String name
static belongsTo = [parentDomain : ParentDomain]
}
在當我設置(首次),它與在部分表下面的內容正確保存它的服務方法parentDomain.setSections(部分對象的列表)。
+----+---------+---------------+-------------+------------------+
| id | version | name | parentdomain_id | sections_idx |
+----+---------+---------------+-------------+------------------+
| 1 | 0 | Section 1 | 6 | 0 |
| 2 | 0 | Section 1 | 6 | 0 |
+----+---------+---------------+-----------------+--------------+
當我獲得/更新從DB父域對象和新段設置對象列表parentDomain.setSections(新區段對象列表),然後運行parentDomain.save(沖洗:真)不從表中刪除舊的部分對象,但除了像這樣的舊部分之外,還添加了新的部分條目。
+----+---------+---------------+-------------+------------------+
| id | version | name | parentdomain_id | sections_idx |
+----+---------+---------------+-------------+------------------+
| 1 | 0 | Section 1 | 6 | 0 |
| 2 | 0 | Section 2 | 6 | 1 |
| 3 | 0 | Section 3 | 6 | 0 |
| 4 | 0 | Section 4 | 6 | 1 |
+----+---------+---------------+-----------------+--------------+
據我瞭解,它應該只保留2節的對象,而更新和刪除由於級聯更新舊的。同樣奇怪的是,當我從db中獲取父域對象實例時,我只能得到與它關聯的最後2個section對象。是否因爲sections_idx?
感謝您的回覆。實際上,自從幾周以來我一直在使用GORM。我主要使用休眠Pojo的數據持久性。我知道addTo和removeFrom *,但我不明白爲什麼設置方法是不正確的方式,因爲我想覆蓋集合。我認爲addTo *會附加到現有的列表。同樣在hibernate中,如果我們覆蓋集合,舊的集合將被刪除。我期望GORM能夠以這種方式工作,因爲它也是建立在休眠之上的。 –
我明白了idx專欄的意義。列表保留了訂單,因此它需要添加_idx列來保持這一點。我會更深入地研究它,並將其與休眠進行比較。感謝曼尼什;)+1爲您的答案 –