gpt4 book ai didi

java - 在 Morphia createQuery 方法中传递集合名称是一个好习惯吗?

转载 作者:行者123 更新时间:2023-12-02 06:25:07 25 4
gpt4 key购买 nike

我通常在实例化查询对象时使用这种方法:

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

但是 Morphia 允许您在实例化查询对象时传递集合名称,如下所示:

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

我无法理解为什么我们必须在创建查询对象时显式传递集合名称?

当我们创建模型时,在本例中,在 Product 类中,我们已经在 Entity 注释下绑定(bind)了集合名称:

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

我能想到的一个原因是,如果在多个集合中使用相同的模型,那么我们可能需要传递集合名称,但即使是这样,这也是一种好的做法吗?它是否遵守 ORM 准则?请帮我理解。

最佳答案

该方法用于根据应用程序使用情况将一个实体存储在不同集合中的情况。它“隐藏”在 AdvancedDatastore 接口(interface)上,因此您在 Datastore 引用上应该看到的只是采用该类型的 createQuery()。大多数用户不需要覆盖的表单,但它是多年前添加的,目的是为了方便那些需要映射到多个位置的用户。

这是一个轻微的错误功能,因为它不太适合 @Reference 字段。我不确定该功能将继续存在多久,因为它使某些实现变得复杂,但几乎没有什么好处。

关于java - 在 Morphia createQuery 方法中传递集合名称是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55793925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com