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