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.