我有一个包含多个一对多关系的模型。其中一个是类PageList
,其中包含多个HeaderEntries
。每个HeaderEntry
用于存储有关Pages
中所有PageList
共有的一列标题的信息。
由于页面的HeaderEntries
具有在将来的操作中使用的特定顺序,因此HeaderEntries
的此顺序很重要并且应该保持不变。
由于可以从HeaderEntries
删除Header
,因此我不想向每个idx
添加属性HeaderEntry
,并在所有HeaderEntries
上更新List<HeaderEntry> header
static hasMany = [header: HeaderEntry]
1}}&#39;手动&#39;,如果其中一个被删除或添加了新的。
因此我使用了以下代码
PageList
位于static belongsTo = [pagelist: PageList]
和
HeaderEntry
位于MySQL
。
我过去使用过header_idx
,所有内容都运行正常,因为每个HeaderEntry
添加了一个属性HeaderEntry
,并在添加HeaderEntry
时自动更新或删除。稍后加载header
时,HeaderEntries
可以作为正确排序HeaderEntry
的列表进行访问,其中indexOf
的位置与另一个对象一起保存通过使用列表header
上的MongoDB
轻松确定。
由于性能问题,我想将数据库更改为header_idx
,但我无法重现所描述的行为。使用代码avove,不会生成任何属性static embedded = ['header']
,因此列表会松散其顺序。如果我使用
HeaderEntries
我会在数据库中有很多重复的条目,因为从许多对象引用了相同的indexOf
。或者这是以文档为导向的dbs的方式?此外,我无法使用HeaderEntry
,因为由PageList
以外的其他对象存储的HeaderEntry
被解释为与header
中的对应PageList <-> Header
不同的对象}。
所描述的行为不仅适用于<
关系,还适用于许多其他关系。