Фильтровать HashMap с помощью Morphia

Моя сущность содержит это поле:

@Embedded
public Map<String, Integer> map;

В запросе, который я хочу отфильтровать по этой карте, все элементы должны иметь один и тот же ключ/значение карты, переданной в параметре.

Я попробовал это, как было предложено здесь:

for (Entry<String, Integer> e : myMap.entrySet()) {
    query.filter("map." + e.getKey(), e.getValue());
}

Это работает, но у меня есть предупреждения, и мне это не нравится:

[warn] o.m.m.q.QueryValidator - The type(s) for the query/update may be inconsistent; using an instance of type 'java.lang.Integer' for the field 'models.MyModel.map' which is declared as 'java.util.Map'
[warn] o.m.m.q.QueryValidator - Validation warnings: 
[Validation failed: 'Type java.util.Map may not be queryable with value '2' with class java.lang.Integer']

Поэтому я ищу другой способ сделать это. Я пробовал все это, и никто не работает:

query.field("map").equal(myMap);
query.filter("map", myMap);
query.field("map").hasAllOf(myMap.entrySet());
query.field("map").hasAllOf(myMap.keySet());

Это проблема порядка карт или что-то еще? Любые идеи ? Спасибо.


person c4k    schedule 06.08.2014    source источник
comment
Ничего не работает означает, что вы не получаете желаемого результата или что вы всегда получаете предупреждение?   -  person xeraa    schedule 07.08.2014
comment
Извините, вы правы, я не ясно выразился. Это означает, что у меня нет ожидаемого результата, но нет предупреждений.   -  person c4k    schedule 07.08.2014


Ответы (1)