Q:

What could cause a "java.lang.IllegalArgumentException: Type mismatch" in GAE Query?

I have two code snippets which I am trying to run on the development server of Google App Engine SDK v1.8.8 for Java.
The first:
return datastore.get(KeyFactory.createKey(Kinds.Provider,provider_id));

works as expected and returns the Provider Entity from the Data Store.
But when I tried to change it to a projection Query so that it will return only 
Filter filter=new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,
                                  Query.FilterOperator.EQUAL,
                                  KeyFactory.createKey(Kinds.Provider,provider_id));
Query q = new Query(Kinds.Provider)
            .setFilter(filter)
    .addProjection(new PropertyProjection("address", String.class))
        .addProjection(new PropertyProjection("last_modified", String.class));;
    }
PreparedQuery pq = datastore.prepare(q);
log.info("query:" + q.toString());

Entity result = pq.asSingleEntity();

I am getting a the following Exception:
java.lang.IllegalArgumentException: Type mismatch.
    at com.google.appengine.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:96)
    at com.google.appengine.api.datastore.RawValue.asType(RawValue.java:61)
    at com.google.appengine.api.datastore.PropertyProjection.getValue(PropertyProjection.java:65)
    at com.google.appengine.api.datastore.EntityTranslator.createFromPb(EntityTranslator.java:29)
    at com.google.appengine.api.datastore.QueryResultsSourceImpl.processQueryResult(QueryResultsSourceImpl.java:199)
    at com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:106)
    at com.google.appengine.api.datastore.QueryResultIteratorImpl.ensureLoaded(QueryResultIteratorImpl.java:155)
    at com.google.appengine.api.datastore.QueryResultIteratorImpl.nextList(QueryResultIteratorImpl.java:110)
    at com.google.appengine.api.datastore.LazyList.forceResolveToIndex(LazyList.java:93)
    at com.google.appengine.api.datastore.LazyList.resolveToIndex(LazyList.java:73)
    at com.google.appengine.api.datastore.LazyList.resolveToIndex(LazyList.java:56)
    at com.google.appengine.api.datastore.LazyList.isEmpty(LazyList.java:260)
    at com.google.appengine.api.datastore.PreparedQueryImpl.asSingleEntity(PreparedQueryImpl.java:74)

logging the querys .toString() yeilds:
SELECT last_modified, address FROM Provider WHERE __key__ = Provider(99)

Any Ideas on what might be the reason for this exception?

A:

OK, Found It.
within the DB last_modified is actually a Long so it should have been
.addProjection(new PropertyProjection("last_modified", Long.class));

Thank you for listening and I hoe this might help someone in the future...

