Hi,
I finally found a solution like this:
list.add(first.copy());
where copy creates a new SubEntity and copies all fields except the
key to the new instance.
Do you regard this as a bug?
Gunnar


On 2 mar, 20:28, Gunnar <[email protected]> wrote:
> I've uploaded my app to google with the same result, so it's not a
> problem with Eclipse or sdk version.
> Gunnar
>
> On 1 mar, 20:59, John Patterson <[email protected]> wrote:
>
> >http://lmgtfy.com/?q=appengine+jdo+%22default+fetch+group%22
>
> > On 2 Mar 2010, at 02:50, Gunnar wrote:
>
> > > I don't jnow what you mean with "look into default fetch group!.
> > > Please explain.
> > > Gunnar
>
> > > On 1 mar, 19:20, John Patterson <[email protected]> wrote:
> > >> Did you look into "default fetch group"?
>
> > >> On 2 Mar 2010, at 01:04, Gunnar wrote:
>
> > >>> Hi,
> > >>> I followed Jakes advice to do e.setList(list) but no change.
> > >>> I've also stepped through my code, but there is no exception!
> > >>> Btw I use version 1.3.1 of the SDK.
> > >>> Gunnar
>
> > >>> On 1 mar, 15:28, John Patterson <[email protected]> wrote:
> > >>>> It is unusual that you see no  stack trace.  Are you sure you are  
> > >>>> not
> > >>>> catching it?  You could step through the code line by line to see
> > >>>> what
> > >>>> happens after the line with the problem.
>
> > >>>> Could this be something to do with setting the fetch group to
> > >>>> default?  That seems to be the problem with a lot of peoples JDO
> > >>>> code :)
>
> > >>>> On 1 Mar 2010, at 21:19, Jake wrote:
>
> > >>>>> If I recall, JDO is picky when it comes to being aware of changes
> > >>>>> made
> > >>>>> to a persisted object.  For example, changing fields directly
> > >>>>> (object.field = newValue;) doesn't work - you need to use a  
> > >>>>> getter/
> > >>>>> setter (object.setField(newValue);).  Perhaps you are encountering
> > >>>>> the
> > >>>>> same issue here?  Does the following type of thing work?
>
> > >>>>> LIst<SubEntity> list = e.getMyList();
> > >>>>> SubEntity first = list.remove(0);
> > >>>>> list.add(first);
> > >>>>> e.setMyList(list);
> > >>>>> pm.makePersistent(e);
> > >>>>> tx.commit();
>
> > >>>>> Jake
>
> > >>>>> On Feb 28, 11:05 am, Gunnar <[email protected]> wrote:
> > >>>>>> Hi,
> > >>>>>> John and Karel, you are right about the placement of the commit
> > >>>>>> statement.
> > >>>>>> It worked in the test example because I only had one instance of
> > >>>>>> MyEntity.
> > >>>>>> I don't get any exception at all in the Eclipse console!
> > >>>>>> When I add a second instance of MyEntity if fails with  
> > >>>>>> "Transaction
> > >>>>>> is
> > >>>>>> not active" as expected.
>
> > >>>>>> Now I've changed the code in the try statement like this, but  
> > >>>>>> still
> > >>>>>> the first sub entity is lost and no exception is thrown!
> > >>>>>> (Of cause it would fail it the list is empty.)
>
> > >>>>>> List<MyEntity> results = (List<MyEntity>) query.execute();
> > >>>>>>         if (results.iterator().hasNext()) {
> > >>>>>>                 tx.begin();
> > >>>>>>                 MyEntity e = results.iterator().next();
> > >>>>>>                 List<SubEntity> list = e.getMyList();
> > >>>>>>                 SubEntity first = list.remove(0);
> > >>>>>>                 boolean ok = list.add(first);
> > >>>>>>                 if (!ok) {
> > >>>>>>                         System.err.println("could not add  
> > >>>>>> first");
> > >>>>>>                 }
> > >>>>>>                 System.out.println(list);
> > >>>>>>                 pm.makePersistent(e);
> > >>>>>>                 tx.commit();
> > >>>>>>         }
>
> > >>>>>> On 28 Feb, 02:51, John Patterson <[email protected]> wrote:
>
> > >>>>>>> This should be throwing an exception.  The JavaDocs for
> > >>>>>>> Transaction.commit() say
> > >>>>>>> Commits the transaction. Whether this call succeeds or fails,  
> > >>>>>>> all
> > >>>>>>> subsequent method invocations on this object will throw
> > >>>>>>> IllegalStateException.
>
> > >>>>>>> When something does not work as you expect the first place to  
> > >>>>>>> look
> > >>>>>>> is
> > >>>>>>> the logs under your application console.
>
> > >>>>>>> On 28 Feb 2010, at 05:25, Karel Alvarez wrote:
>
> > >>>>>>>> dont you get any exceptions stacktrace  in the server  
> > >>>>>>>> console? it
> > >>>>>>>> would help... also you are calling commit() inside the for  
> > >>>>>>>> loop,
> > >>>>>>>> although the transactions is started only once... that would
> > >>>>>>>> crash
> > >>>>>>>> in the second iteration in a normal db server, I am not sure  
> > >>>>>>>> what
> > >>>>>>>> GAE does with it, in any case I dont think it is what you
> > >>>>>>>> intended...
>
> > >>>>>>>> On Sat, Feb 27, 2010 at 2:52 PM, Gunnar <[email protected]>
> > >>>>>>>> wrote:
> > >>>>>>>> Hi,
> > >>>>>>>> I have problem with reordering a List.
> > >>>>>>>> I created a test with an entity called MyEntity which have a
> > >>>>>>>> List<SubEntity>.
> > >>>>>>>> First I persist one instance of MyEntity with a list  
> > >>>>>>>> containing 3
> > >>>>>>>> SubEntity.
> > >>>>>>>> This works fine. Then I call a reorder servlet that moves the
> > >>>>>>>> first
> > >>>>>>>> SubEntity to the last position in the list.
> > >>>>>>>> The result is that the first SubEntity is lost and the  
> > >>>>>>>> datastore
> > >>>>>>>> only
> > >>>>>>>> contains 2 SubEntity instances.
> > >>>>>>>> What can be wrong?
> > >>>>>>>> Here is the reorder code:
>
> > >>>>>>>> package com.google.appengine.demo;
>
> > >>>>>>>> import java.io.IOException;
> > >>>>>>>> import java.util.List;
>
> > >>>>>>>> import javax.jdo.PersistenceManager;
> > >>>>>>>> import javax.jdo.Query;
> > >>>>>>>> import javax.jdo.Transaction;
> > >>>>>>>> import javax.servlet.http.HttpServlet;
> > >>>>>>>> import javax.servlet.http.HttpServletRequest;
> > >>>>>>>> import javax.servlet.http.HttpServletResponse;
>
> > >>>>>>>> @SuppressWarnings("serial")
> > >>>>>>>> public class ReorderServlet extends HttpServlet {
> > >>>>>>>>       �...@suppresswarnings("unchecked")
> > >>>>>>>>        public void doGet(HttpServletRequest req,
> > >>>>>>>> HttpServletResponse
> > >>>>>>>> resp)
> > >>>>>>>> throws IOException {
> > >>>>>>>>                PersistenceManager pm =
> > >>>>>>>> PMF.get().getPersistenceManager();
> > >>>>>>>>                Query query = pm.newQuery(MyEntity.class);
> > >>>>>>>>                Transaction tx = pm.currentTransaction();
> > >>>>>>>>                try {
> > >>>>>>>>                        tx.begin();
> > >>>>>>>>                        List<MyEntity> results =  
> > >>>>>>>> (List<MyEntity>)
> > >>>>>>>> query.execute();
> > >>>>>>>>                        if (results.iterator().hasNext()) {
> > >>>>>>>>                                for (MyEntity e : results) {
> > >>>>>>>>                                        List<SubEntity> list =
> > >>>>>>>> e.getMyList();
> > >>>>>>>>                                        SubEntity first =
> > >>>>>>>> list.remove(0);
> > >>>>>>>>                                        boolean ok =
> > >>>>>>>> list.add(first);
> > >>>>>>>>                                        if (!ok) {
>
> > >>>>>>>> System.err.println("could not add first");
> > >>>>>>>>                                        }
>
> > >>>>>>>> System.out.println(list);
> > >>>>>>>>                                        pm.makePersistent(e);
> > >>>>>>>>                                        tx.commit();
> > >>>>>>>>                                }
> > >>>>>>>>                        }
> > >>>>>>>>                } catch (Exception e) {
> > >>>>>>>>                        e.printStackTrace();
> > >>>>>>>>                } finally {
> > >>>>>>>>                        if (tx.isActive())
> > >>>>>>>>                                tx.rollback();
> > >>>>>>>>                        query.closeAll();
> > >>>>>>>>                        pm.close();
> > >>>>>>>>                }
> > >>>>>>>>                resp.setContentType("text/plain");
> > >>>>>>>>                resp.getWriter().println("reordered");
> > >>>>>>>>        }
> > >>>>>>>> }
>
> > >>>>>>>> --
> > >>>>>>>> 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 
> > >>>>>>>> [email protected]
> > >>>>>>>> .
> > >>>>>>>> To unsubscribe from this group, send email to 
> > >>>>>>>> [email protected]
> > >>>>>>>> .
> > >>>>>>>> For more options, visit this group 
> > >>>>>>>> athttp://groups.google.com/group/google-appengine-java?hl=en
> > >>>>>>>> .
>
> > >>>>>>>> --
> > >>>>>>>> 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 
> > >>>>>>>> [email protected]
> > >>>>>>>> .
> > >>>>>>>> To unsubscribe from this group, send email to 
> > >>>>>>>> [email protected]
> > >>>>>>>> .
> > >>>>>>>> For more options, visit this group 
> > >>>>>>>> athttp://groups.google.com/group/google-appengine-java?hl=en
> > >>>>>>>> .
>
> > >>>>> --
> > >>>>> 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 
> > >>>>> [email protected]
> > >>>>> .
> > >>>>> To unsubscribe from this group, send email to 
> > >>>>> [email protected]
> > >>>>> .
> > >>>>> For more options, visit this group 
> > >>>>> athttp://groups.google.com/group/google-appengine-java?hl=en
> > >>>>> .
>
> > >>> --
> > >>> 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 
> > >>> [email protected]
> > >>> .
> > >>> To unsubscribe from this group, send email to 
> > >>> [email protected]
> > >>> .
> > >>> For more options, visit this group 
> > >>> athttp://groups.google.com/group/google-appengine-java?hl=en
> > >>> .
>
> > > --
> > > You received this message because you are subscribed to the Google  
>
> ...
>
> läs mer »

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to