2012-02-29 12 views
0

問題は異なるコレクションでクエリを検索することです。モルフィア。異なるコレクション(種類)を使用してクエリを複製する方法

ありAdvancedDatastoreインタフェースのメソッドです:

<T> Query<T> createQuery(String kind, Class<T> clazz, DBObject q); 

は、しかし、そのしか与えられbaseQueryでクエリを作成し、私は完全なクエリのクローンが異なるDBCollectionフィールドにする必要があります。 提案がありますか?ここで

は、クエリを変換する私の方法です:

public Query<Vacancy> convertQuery(Query<T> query) { 
     QueryImpl<T> queryImpl = (QueryImpl<T>) query; 
     DBObject dbO = queryImpl.getQueryObject(); 
     Query<T> our_query = ((AdvancedDatastore)this.getDatastore()).createQuery("AnotherCollectionName", T.class, dbO);   
     return our_query; 
    } 

更新

反射して正常に動作しますが、私は理由もパフォーマンスのこの汚い方法のようにいけません。

答えて

1

これは良い解決策のようです。クエリが作成されると、元のコレクション/種類を変更することはできません。不変です。

この機能を使用するには、Query/QueryImplのディープクローン演算子または要求をmorphiaで実装する必要があります。

関連する問題