如何使用Morphia保存到其他收藏?

时间:2015-10-31 16:21:47

标签: mongodb save morphia

假设我有一个注释用于Morphia的课程RewriteEngine on RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

Foo

大多数时候,当我从数据库中读/写@Entity("Foo") public class Foo{ ... } 时,我想使用Foo集合

Foo

但有时我想读/写datastore.save(foos); 集合。如何在Morphia中将Bar保存到集合Foo

2 个答案:

答案 0 :(得分:2)

您可以将Datastore转换为AdvancedDatastore并致电save(String kind, T entity)

答案 1 :(得分:0)

我认为唯一的选择是子类化:

@Entity("Bar")
public class Bar extends Foo {

您需要实例化正确的类,但应该能够避免代码重复。

如果你有一个共同的基类(public class Foo extends Base),你可以使用基于泛型的persist,get,...上的常见查询:

public <E extends Base> void persist(E entity) {
      mongoDataStore.save(entity);
}
public <E extends Base> E get(Class<E> clazz, ObjectId id) {
    return mongoDataStore.find(clazz).field("id").equal(id).get();
}

然后你可以简单地做这样的事情:

Bar bar = new Bar();
persistenceService.persist(bar);
Foo foo = new Foo();
persistenceService.persist(foo);
Bar barFetched = persistenceService.get(Bar.class, ...);