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 <jdpatter...@gmail.com> 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 <gunnar....@gmail.com> 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 <jdpatter...@gmail.com> 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 <gunnar....@gmail.com>  
> >>>> 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 
> >>>> 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 
> >>>> 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 
> >>>> 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 
> >>>> 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 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 
> > 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 google-appengine-j...@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