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 at
http://groups.google.com/group/google-appengine-java?hl=en.