No. The StreamingQueryResult class, which is a List used by DataNucleus to
store query results, does not implement Serializable which is required for
all objects stored in memcache. But you can create another List, i.e. an
ArrayList, copy the (serializable) results into it, and cache this. You'll
also need to do this if you want to send query results over the wire to a
GWT-based application, for example.
- Jason

On Mon, Oct 19, 2009 at 2:03 PM, Larry Cable <larry.ca...@gmail.com> wrote:

>
> quick question: should I be able to directly serialize (Cache.put
> (...)) results of JDO queries into Memcache?
>
> It "appears" not ...
>
> I have the following class(es):
>
> @PersistenceCapable(identityType=IdentityType.APPLICATION,
> objectIdClass=CityState.CityStateKey.class, cacheable="true",
> detachable="true")
> public class CityState implements Serializable {
>        public static class CityStateKey implements Serializable {
>
>                @NotPersistent
>                private static Pattern p =
> Pattern.compile("^(.*),\\s?([A-Za-z]{2})
> $");
>
>                public CityStateKey() { }
>
>                public CityStateKey(String keyValue) {
>                        final Matcher m = p.matcher(keyValue.trim());
>                        if (m.matches()) {
>                                city  = m.group(1);
>                                state = State.valueOf((m.group(2))).name();
>                        } else
>                                        throw new
> IllegalArgumentException(keyValue);
>                }
>
>                /* (non-Javadoc)
>                 * @see java.lang.Object#hashCode()
>                 */
>                @Override
>                public int hashCode() {
>                    // elided ...
>                }
>
>                /* (non-Javadoc)
>                 * @see java.lang.Object#equals(java.lang.Object)
>                 */
>                @Override
>                public boolean equals(Object obj) {
>                                    // elided...
>                }
>
>                public String toString() { return (city + Address.COMMASPACE
> +
> state); }
>
>                public String            state;
>                public String            city;
>        }
>
>        public CityState(final String city, final String state) {
>                this.city  = city.trim();
>                this.state = state;
>        }
>
>        @Override
>        public String getCity() {
>                return city;
>        }
>
>        @Override
>        public String getState() {
>                return state;
>        }
>
>        /* (non-Javadoc)
>         * @see java.lang.Object#hashCode()
>         */
>        @Override
>        public int hashCode() {
>                     // elided...
>        }
>
>        /* (non-Javadoc)
>         * @see java.lang.Object#equals(java.lang.Object)
>         */
>        @Override
>        public boolean equals(Object obj) {
>                    // elided...
>        }
>
>        @Override
>        public String toString() { return city + Address.COMMASPACE +
> state; }
>
>        @Persistent(primaryKey="true") public String state; // should be
> State GAE/JDO does not support...
>        @Persistent(primaryKey="true") public String city;
> }
>
> when I query "select from CityState" via JDO I get a
> StreamingQueryResult ...
>
> if I attempt to put that as a value into memcache I get the typical
> NotSerializableException indicating that
> an object in the graph is not serializable ...
>
> any thoughts/suggestions, clearly the (simple) app domain objects are
> (both) serializable as are the
> internal fields ...
>
> Thanks
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to