0

我有一个带有两个域的脚手架 Grails 应用程序,Person 和 Course。Person 属于 Course,Course 有很多 Person。我已经修改了课程的 show.gsp 以列出与所选课程相关的所有人员。

为此,Course.groovy 包含以下行:

List persons = new ArrayList()

因此,“person”数据库表包含一个persons_idx 字段。我经常会从外部网站向我的 Grails 应用程序之外的“人员”表添加新数据。

插入新数据时,如何确定将 person_idx 设置为什么?

因为我关心排序,所以我最初使用的是 SortedSet 而不是 ArrayList。但是由于我是按 Person.lastName 排序的,并且总会有多个姓氏相同的人,因此该列表将排除那些与其他人姓氏相同的人。我希望有另一种方式...

谢谢。

4

1 回答 1

0

尽可能避免让两个应用程序操作同一个数据库。您的第二个应用程序能否改为在控制应用程序上调用一个操作以将一个人添加到课程中,并传递参数来指定每个人?这样,只有一个应用程序正在写入数据库,从而减少了缓存、索引和序列问题。

您还声明 Person belongsTo Course... 所以您为“Bob Jenkins”为他所在的每门课程创建一个新的 Person?这似乎太过分了。您可能应该为此研究 ManyToMany。

不幸的是,如果不迁移到服务,您可能希望更改您尝试添加 Person 的 Course 子级的一些行的索引,因为该索引是所有课程中的人员。

我建议回到“设置”,并在应用程序中进行排序。您关于排序的其他问题已经告诉您不要覆盖 compareTo 来检查姓氏。如果我是你,我会完全忘记覆盖 compareTo (除了检查 ID,如果你愿意的话),只使用 sort() 方法,传入一个正确排序对象的闭包。

于 2013-02-17T22:59:35.043 回答