In JDO, there are pm.detachX() methods you can use to do this. In JPA,
it appears detachment is automatically done via an annotation, but the
detached objects will still contain non-serializable stuff. Details
here:

http://timepedia.blogspot.com/2009/04/google-appengine-and-gwt-now-marriage.html

HTH,
/dmc

On Tue, Nov 9, 2010 at 7:59 AM, dparish <dpar...@gmail.com> wrote:
> Thanks David.
>
> I tried LAZY and EAGER. Both caused the problem.
>
> For #2, that seems promising. There's an EntityManager clear method,
> but that would affect all threads using the entity manager.  Any
> thoughts on how to do that detach?
>
> On Nov 8, 8:20 pm, David Chandler <drfibona...@google.com> wrote:
>> 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.seriali
>> >  ze(ServerSerializationStreamWriter.java:
>> > 610)
>> >        at
>> > com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.write
>> >  Object(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.seriali
>> >  zeValue(ServerSerializationStreamWriter.java:
>> > 534)
>> >        at
>> > com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.seriali
>> >  zeClass(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 
>> > athttp://groups.google.com/group/google-web-toolkit?hl=en.
>>
>> --
>> David Chandler
>> Developer Programs Engineer, Google Web 
>> Toolkithttp://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.
>
>



-- 
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