Sure, I read the documentation, but maybe I missed the critical part.
My understanding was, that with Objectify all I need to do is to use
the right annotations. Here's how my class looks like:
@Cached
public class ItemInstance extends DomainObject implements
Comparable<ItemInstance> {
private Long itemId;
private Long itemListId;
@Unindexed
private String attribute;
@Unindexed
private boolean ticked;
private String text;
@Transient
private boolean inList = false;
...
And the query is like "find by itemListId order by text".
The exception is:
net.sourceforge.stripes.util.Log warn: Unhandled exception caught by
the Stripes default exception handler.
com.google.appengine.api.datastore.DatastoreNeedIndexException: no
matching index found.. <datastore-index kind="ItemInstance"
ancestor="false" source="manual">
<property name="itemListId" direction="asc"/>
<property name="text" direction="asc"/>
</datastore-index>
at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:
42)
at com.google.appengine.api.datastore.DatastoreApiHelper
$1.convertException(DatastoreApiHelper.java:98)
at
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
69)
at
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
67)
at
com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:
71)
at
com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:
32)
at
com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:
69)
at
com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:
56)
at
com.google.appengine.api.datastore.QueryResultIteratorImpl.ensureLoaded(QueryResultIteratorImpl.java:
156)
at
com.google.appengine.api.datastore.QueryResultIteratorImpl.hasNext(QueryResultIteratorImpl.java:
65)
at
com.googlecode.objectify.helper.TranslatingIterator.hasNext(TranslatingIterator.java:
29)
at com.googlecode.objectify.impl.QueryImpl.list(QueryImpl.java:468)
at
org.cloudme.loclist.dao.ItemInstanceDao.listByItemList(ItemInstanceDao.java:
15)
at
org.cloudme.loclist.item.ItemService.getItemInstances(ItemService.java:
102)
...
Any ideas what's wrong here?