簡體   English   中英

在Morphia createQuery方法中傳遞集合名稱是一種好習慣嗎?

[英]Is it good practice to pass collection name in Morphia createQuery method?

我通常在實例化查詢對象時使用此方法:

Query<Product> query = datastore.createQuery(Product.class);

但Morphia允許您在實例化查詢對象時傳遞集合名稱,如下所示:

Query<Product> query = datastore.createQuery(COLLECTION_NAME, Product.class);

我無法理解為什么在創建查詢對象時我們必須顯式傳遞Collection名稱?

當我們創建模型時,在這種情況下,在Product類中,我們已經在Entity注釋下綁定了集合名稱:

@Entity(value = "product", noClassnameStored = true)
class Product {
  // model attributes declared here
}

我能想到的一個原因是,如果在多個集合中使用相同的模型,那么我們可能需要傳遞集合名稱,但即使它是這樣,這是一個好的做法並且它是否遵守ORM指南? 請幫我理解。

該方法用於根據應用程序使用情況將一個實體存儲在不同集合中的情況。 它在AdvancedDatastore接口上“隱藏”,因此您在Datastore引用上看到的所有內容都是采用該類型的createQuery() 大多數用戶不需要覆蓋的表單,但它是多年前添加的,以方便那些需要映射到多個位置的人。

這是一個溫和的錯誤,因為它與@Reference字段不太合作。 我不確定該功能將持續存在多長時間,因為它使一些實現變得復雜,但收效甚微。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM