2013-02-22 39 views
1

在morphia中,您可以使用@Index注释为@Entity类创建自动索引。我正在尝试通过指定集合名称来创建这些索引,但找不到一种方法来执行此操作。使用AdvancedDatastore,您可以将Entity保存到您想要的任何集合中,但可以确保指定集合上的索引而不是默认集合Entity如何通过指定集合名称在AdvancedDatastore中使用ensureIndex?

advancedDatastore.ensureIndexes(Entity.class); // This will create indexes on the mapped Entities. 

我正在寻找一种方式来做到以下几点,但我没有看到类似下面的任何方法,有一种解决方法来实现这一目标:

advancedDatstore.ensureIndexes("exampleCollection", Entity.class); //create indexes of Entity.class for the exampleCollection. 
+0

出于兴趣:为什么不能在实体内注释它? – xeraa 2013-02-22 13:53:11

+0

我已经使用索引字段对实体进行了注释,因此,当我在映射的数据存储上调用ensureIndex时,它会在实体的默认集合上创建索引。但是我想创建与集合的默认名称不同的命名集合上的索引。 – cubbuk 2013-02-22 14:15:25

回答

0

是的,你可以扩展AdvancedDatastore接口和DatastoreImpl具体类以添加带有额外参数的ensureIndex*方法。我们在我们的组织中这样做,并且它可以工作

还有一个挂起的请求将此功能直接添加到Morphia:https://github.com/mongodb/morphia/pull/541。如果你愿意构建你自己的Morphia jar,你可以使用那里列出的补丁。

相关问题