1

Grails の id フィールドに何かカスタムを保存してみてください:

Cover saveCover = new Cover(id: url, url: url, name: name, sku: sku, price: price)

しかし、DB では、_id フィールドに 52658d9284aea229e226ab9c のようなものが表示されます。それは私を混乱させます.ObjectIdのように見えますが、カバードメインに送信する文字列ではありません(ちなみに、カバードメインのフィールドIDは文字列です)。

ここで何が問題なのですか?

4

3 に答える 3

1

これは、MongoDb が自動的に生成する ObjectID です。参照: http://docs.mongodb.org/manual/reference/object-id/

「_id フィールドが指定されていない場合、MongoDB は _id フィールドのデフォルト値として ObjectIds を使用します。MongoDB クライアントは、一意の ObjectId を持つ _id フィールドを追加する必要があります。ただし、クライアントが _id フィールドを追加しない場合、mongod は _id フィールドを追加します。 ObjectId を保持します。」

独自の ID を設定する場合は、「id」の代わりに「_id」を設定します

于 2013-10-21T21:12:46.370 に答える
1

生成された ID の代わりにカスタム割り当て ID を使用する場合は、マッピングを設定する必要があります。

class Cover {
    String id
    String name
    String url
    String sku
    String price
    static mapping = {
        id generator: 'assigned'
    }
}
于 2013-12-09T14:04:33.000 に答える