Grails如何在从Grails应用程序外部插入数据时设置_idx字段?

Grails如何在从Grails应用程序外部插入数据时设置_idx字段?,grails,gorm,Grails,Gorm,我有一个框架式的Grails应用程序,它有两个域:Person和Course。人属于课程,课程有很多人。我已修改了课程的show.gsp,以列出与所选课程相关的所有人员 为此,Course.groovy包含以下行: List persons = new ArrayList() 因此,“person”数据库表包含persons_idx字段。我经常从外部网站在Grails应用程序之外向“person”表添加新数据 插入新数据时,如何确定将persons_idx设置为什么 我最初使用SortedSe

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

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

List persons = new ArrayList()
因此,“person”数据库表包含persons_idx字段。我经常从外部网站在Grails应用程序之外向“person”表添加新数据

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

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


谢谢。

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

你还说那个人属于。。。那么你为“鲍勃·詹金斯”的每门课都创建了一个新人?这似乎太过分了。你可能应该为此调查很多人

不幸的是,在不移动到服务的情况下,您可能希望更改您试图向其中添加人员的课程的子课程的某些行(如果不是很多行)上的索引,因为该索引是课程中所有人员的排序索引


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

最终,是的,我确实需要引入一个服务层,我的每个应用程序都可以使用它与数据库进行对话。我只是还没到那里。我会探索多对多,但根据我的要求,“Bob Jenkins”只能注册一门课程,“还没到”离Grails并不遥远。本质上,大多数控制器已经是“几乎”RESTful服务。最困难的部分是让你的其他应用程序能够使用HttpClient或类似的参数命中你的Grails应用程序,而不是直接命中DB。我编辑了一些内容来解决你当前的问题,而不是遥远的问题。谢谢。你对以下文章中的解决方案有什么想法…()?它建议不要在课程中使用人员集合,而是在人员中添加“课程”。我发现这对我来说是可行的,尽管我还不能完全理解它到底为什么有效。有了这个解决方案,我可以在show.gsp页面中实现排序。当然,伯特是个聪明人。在那一点上,你基本上是在写你自己的一本书,但这并不难。您可以编写自己的级联删除等。