2010-11-19 9 views
7

対組み込みコレクション...GrailsのMongoDBのプラグイン:参考もともとGrailsのメーリングリストに投稿さ

私は一般的に、データベースの男ではないんだけどGrailsのための最新のMongoDBプラグインのリリースで、私は何を見てみたかったです大きな違いは、SQLデータベースがないことです。 MongoDBはかなり興味深いようです。ドキュメントは、注文が収集する必要がありますと言う

顧客/発注/受注ラインアイテム:私は、ドキュメント指向のストレージ上の情報を読み取り、次のシナリオに出くわしました。顧客にコレクション。 line-itemは、theorderオブジェクトに埋め込まれた行項目の配列でなければなりません。

GORMに関しては、どのようにこのパターンが保証されていますか?私は通常、次のようなものを持っています:

class Customer { 
    static hasMany = [orders: Order] 
} 

class Order { 
    static hasMany = [orderItems: OrderItem] 
    static belongsTo = [customer:Customer] 
} 

class OrderItem { 
    static belongsTo = [order:Order] 
} 

注文は自分のコレクションであり、顧客に組み込まれていないことを確認するにはどうすればよいですか?これがデフォルトの場合、OrderItemsがOrderに埋め込まれていて、それが自分のコレクションではないことを確認する方法はありますか?ここのデフォルトは何ですか?

ありがとうございました。

答えて

10

Grails MongoDB Pluginのドキュメントを読むと、埋め込みオブジェクトを明示的に宣言する必要があるようです(参照はデフォルトです)。あなたは注文が自身のコレクションであることを確認するために、とのOrderItemsを埋め込むことが、このしようとする場合は念頭に置いて

は、:こんにちは

class Customer { 
    List<Order> orders 
} 

class Order { 
    List<OrderItem> orderItems 
    static embedded = [ 'orderItems' ] 
} 

class OrderItems { 
    // properties go here. 
} 

Here's the documentation.

+0

を、この答えは、便利ですそれは本当に質問に答えるものではなく、答えを見つけるための方向性しか与えない。具体的には、 "hasMany"のようなものがmongodbの文脈で使用されるかどうか(私は推測していない)かどうかはまだ分かりません。そうでなければ、ドメインクラスでこれをどのように指定してコレクションをmongodbに正しく保存されています。グレッグの質問(「オーダーが注文に埋め込まれていて、自分のコレクションではないことを確認するにはどうすればよいのですか?ここのデフォルトは何ですか?」)が明確に答えられていれば、それは学ぶ良い例となります。 – mindthief

+1

@mindthief:質問に答えるために、答えをもう少し明示的に更新しました。また、 "hasMany"はリレーショナルデータベースのような概念であると考えています。そのため、MongoDBはそれを使用しません。 – Pat

+0

...ありがとうパット!! – mindthief

関連する問題