Hi dparish,

There are three issues here:

1. GWT needs a fully populated object graph to send back to the
client. Lazy fetching will not work across the client / server
boundary, so you must ensure that your code fetches all relations
eagerly (via an annotation or a separate call if needed).

2. JDO and JPA implementations use proxy classes for objects attached
to a persistence manager. Before they can be sent back to the client,
you must detach all objects from the PM.

3. Even then, GWT won't be able to serialize any types for which it
doesn't know the source (like App Engine's Key class). The open source
Gilead project and others like Objectify provide GWT wrappers for
these.

HTH,
/dmc

On Mon, Nov 8, 2010 at 8:17 PM, dparish <dpar...@gmail.com> wrote:
> I have an entity with a member like this:
>
>
> @Entity
> public class Foo  implements Serializable{
>
>   �...@onetomany(mappedBy="foo",targetEntity=InternalText.class,
>               fetch=FetchType.EAGER)  // I tried Lazy too.
>
>     private ArrayList<InternalText>internalTextEntries;
>
>
> When I try to use Foo I get this error:
>
>
> Throwable occurred:
> com.google.gwt.user.client.rpc.SerializationException: Type
> 'org.apache.openjpa.util.java$util$ArrayList$proxy' was not included
> in the set of types which can be serialized by this
> SerializationPolicy or its Class object could not be loaded. For
> security purposes, this type will not be serialized.: instance =
> [blah.blah.entities.internalt...@36ae36ae,
> blah.bhla.entities.internalt...@3fca3fca,
> blah.blah.retain.entities.internalt...@42474247,
> blah.blah.entities.internalt...@48724872]
>        at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:
> 610)
>        at
> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:
> 129)
>        at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter
> $ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
>        at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:
> 534)
>        at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:
> 700)
>
>
> From what I can tell openjpa is creating a helper representation of
> ArrayList that it uses to assist in monitoring and lazy loading the
> child table.  I've tried eager and lazy fetching.
>
> I tried this:
>
>        ArrayList<InternalText> newText = new ArrayList<InternalText>();
>        for (InternalText textItem: foo.getInternalTextEntries()) {
>                newText.add(textItem);
>        }
>        foo.setInternalTextEntries(newText);
>
>
> It got past my error, but then the next layer down had trouble (Date
> in the InternalText class)
>
> Type 'org.apache.openjpa.util.java$util$Date$proxy' was not included
> in the set of types which can be serialized by this
> SerializationPolicy
>
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google Web Toolkit" group.
> To post to this group, send email to google-web-tool...@googlegroups.com.
> To unsubscribe from this group, send email to 
> google-web-toolkit+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/google-web-toolkit?hl=en.
>
>



-- 
David Chandler
Developer Programs Engineer, Google Web Toolkit
http://googlewebtoolkit.blogspot.com/

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to