java.lang.UnsupportedOperationException: This operation is not supported on Query Results
at org.datanucleus.store.query.AbstractQueryResult.contains(AbstractQueryResult.java:250)
at java.util.AbstractCollection.retainAll(AbstractCollection.java:369)
at namespace.MyServlet.doGet(MyServlet.java:101)
Я пытаюсь взять один список, который я получил из запроса к хранилищу данных, и сохранить только те результаты, которые также находятся в списке, который я получил из списка ключей. Оба моих списка заполнены, как и ожидалось, но я не могу сохранить все в одном из них.
// List<Data> listOne = new ArrayList(query.execute(theQuery));
// DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
// List<Data> listTwo = new ArrayList(ds.get(keys).values());
// listOne.retainAll(listTwo);
РЕДАКТИРОВАТЬ
Хорошо, в попытке упростить, поскольку это, по-видимому, несколько проблем в одной, я перестал использовать низкоуровневый API для хранилища данных и вместо того, чтобы просто вытягивать по одному с циклом.
List<MyClass> test = (List<MyClass>) query.execute();
List<MyClass> test2 = new ArrayList<MyClass>();
for (String key : favorites) {
test2.add(pm.getObjectById(MyClass.class, key));
}
log.info(test.toString());
test.retainAll(test2);
Выше работает. Он не генерирует исключение. Ниже приведено исключение. Единственная разница заключается в файле log.info. Я в тупике.
List<MyClass> test = (List<MyClass>) query.execute();
List<MyClass> test2 = new ArrayList<MyClass>();
for (String key : favorites) {
test2.add(pm.getObjectById(MyClass.class, key));
}
test.retainAll(test2);
new ArrayList()
для помещения элементов в новый список массивов? Трассировка стека предполагает, что вы не использовалиnew ArrayList()
дляlistTwo
. - person BalusC   schedule 20.05.2010