2

Grails - オブジェクト全体のロードを強制せずに、多対一の関連付けプロパティの ID を公開するにはどうすればよいですか?

class Task {
  User belongsTo
  User createdBy
}
class User {
  ...
}

User オブジェクト全体の遅延読み込みを行わずに、Task から User ID を取得できますか? 一般的にこれを行う方法はありますか、それともクラスごとにカスタムクエリが必要ですか? これには、実際には BlazeDS を介して返される DTO オブジェクトが含まれます。必要なのは、関連付けられたオブジェクトではなく、ID だけです。

4

2 に答える 2

0

どうやら、マジック表記の belongsToId と createdById を使用する必要があるようです - GRAILS-2570を参照してください

于 2013-11-12T17:27:53.967 に答える
0

Grails はデフォルトで遅延関連付けが有効になっているため、熱心なフェッチを有効にしない限り、チェーンされたすべてのオブジェクトのロードについて心配する必要はありません。さらに、名前付きクエリまたは休止状態の基準プロジェクションを使用できます。

 def taskCriteria = Task.createCriteria()  
 def users = taskCriteria.list{//or get
     projections {
         property "id"
     } 
     user{
         eq("userName", "Joe")
     }   
 }

上記は、Joe というユーザーのタスクの ID のみを取得します。

于 2011-04-01T16:09:44.557 に答える