0

Person と Course という 2 つのドメインを持つスキャフォールディングされた Grails アプリケーションがあります。Person は Course に属し、Course には多くの人がいます。コースの show.gsp を変更して、選択したコースに関連付けられているすべての人を一覧表示します。

これを実現するために、Course.groovy には次の行が含まれています。

List persons = new ArrayList()

その結果、"person" データベース テーブルには、persons_idx フィールドが含まれます。外部 Web サイトから、Grails アプリケーションの外部にある「person」テーブルに新しいデータを頻繁に追加します。

新しいデータを INSERT するとき、persons_idx を何に設定するかを知るにはどうすればよいですか?

私は並べ替えに関心があるので、元々、人には ArrayList の代わりに SortedSet を使用していました。しかし、私は Person.lastName で並べ替えを行っており、常に同じ姓を持つ複数の人が存在するため、リストは他の人と同じ姓を持つ人物を除外します。他に方法があればいいのですが…

ありがとう。

4

1 に答える 1

0

2 つのアプリケーションで同じデータベースを操作することは、可能な限り避けるべきです。代わりに、2 番目のアプリケーションで制御アプリのアクションを呼び出して、それぞれを指定するために渡されたパラメーターを使用して Person を Course に追加できますか? こうすることで、DB に書き込むアプリは 1 つだけになり、キャッシュ、インデックス、およびシーケンスの問題が軽減されます。

また、人はコースに属していると述べています...つまり、「ボブ・ジェンキンス」の新しい人を、彼がいるコースごとに作成しますか? これは過剰に思えます。これについては、おそらく ManyToMany を調べる必要があります。

残念ながら、サービスに移動せずに、Person を追加しようとしている Course の子の行の多くではないにしても、いくつかのインデックスを変更する必要があります。コース内の人。

「セット」に戻り、アプリで並べ替えを行うことをお勧めします。並べ替えに関する他の質問では、compareTo をオーバーライドして姓を確認するだけではいけないと既に述べています。もし私があなただったら、compareTo をオーバーライドすることをまったく忘れて (必要に応じて ID をチェックすることを除いて)、単に sort() メソッドを使用して、オブジェクトを正しくソートするクロージャーを渡します。

于 2013-02-17T22:59:35.043 に答える