1 対多の関係を持つ 2 つのドメイン オブジェクトがあります。例として:
Class Author{
static hasMany = [posts: Post]
}
Class Post{
Author author
}
データベースでは、post テーブルに author_id というフィールドがあります。私のアプリケーションには、投稿に関連付けたい多数の著者 ID があります。これを行うには、最初に各著者のデータベースをクエリし、次に author.addToPosts(post) を呼び出します。しかし、私はすでに作成者オブジェクトの ID を持っているので、post.authorId = authorId を直接設定して関連付けを行い (これはとにかくすべて grails が行うことです)、必要なクエリの数を半分に減らすことができるはずです。
私が書いている実際のアプリケーションでは、これを行うことで、必要なクエリの量が約 70% 削減されます。これはアプリケーションの重大なボトルネックであり、SQL のパフォーマンスが低下するわけにはいきません。これを正確に実行するSQLステートメントを簡単に作成できますが、grailsでauthor_idを直接設定して手動で関連付けを行う方法がわかりません。Rails では、この種の機能がアクティブ レコードに組み込まれています。grails でこれを行う方法はありますか?