2015-10-15 44 views
1

Morphia是JVM的持久性庫,用於應用程序需要與MongoDB通信時使用。當你使用它時,顯然在Mongo/Morphia的土地上,這個獨特的ID需要是org.bson.types.ObjectId有沒有辦法使用沒有org.bson.types.ObjectId的Mongo/Morphia?

這是真的嗎?是否有任何理由爲什麼我不能對ID使用Long,如:

// Groovy pseudo-code 
@Entity 
@JsonIgnoreProperties(ignoreUnknown=true) 
@JsonInclude(JsonInclude.Include.NON_NULL) 
class WidgetEntity { 
    @Id 
    Long id 

    // ...etc. 
} 

如果可以只使用一個Long,那麼我究竟用Long放棄而不是ObjectId

回答

1

您可以使用Long,但在這種情況下,您需要自己指定一個值。

從嗎啡quickstart sample

還要注意的是,我們不得不一個新的領域「ID」添加到我們的酒店類。 「id」值可以是任何可持續類型;像int,uuid或其他 對象。如果你想要一個自動生成的值,只需將其聲明爲 ObjectId。如果您不使用ObjectId,則必須在保存 之前設置該值。

+0

Ahh gotchya謝謝@wero(+1),請你確認一下:'長'很好,但我需要自己的自動遞增機制,是嗎?如果是這樣,Morphia(或任何其他人)是否爲這些ID提供自動增量? – DirtyMikeAndTheBoys

+0

是的,你可能會發現這個有用的http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ – wero