Hi, Try using the method makePersistentAll. I too faced similar issue and using the all method worked fine.
~hari On Jul 31, 2010 6:07 AM, "Art" <[email protected]> wrote: Dear group, I would like to know the reason why child value won't be stored when it's persisted directly by referring as a element of list field of parent. In the next testDetach7 JUnit test (which tries to change the value of existing child entity field), - chapter child object was not stored by persisting like pm.makePersistent( b.getChapters().get( 0)) - chapter child object was stored by persisting the parent like by pm.makePersistent( b); public void testDetach7() throws Exception { prepTestObjects(); int originalNumPages = b.getChapters().get( 0).getNumPages(); do { b.getChapters().get( 0).setNumPages( new Double( Math.round( Math.random() * 99)).intValue() + 1 ); } while( originalNumPages == b.getChapters().get( 0).getNumPages()); int newNumPages = b.getChapters().get( 0).getNumPages(); /* pm = pmf.getPersistenceManager(); pm.makePersistent( b.getChapters().get( 0)); Chapter detachedChapter = (Chapter)pm.detachCopy( b.getChapters().get( 0)); pm.close(); This fails assertEquals( newNumPages, detachedChapter.getNumPages()); */ pm = pmf.getPersistenceManager(); pm.makePersistent( b); Chapter detachedChapter = (Chapter)pm.detachCopy( b.getChapters().get( 0)); pm.close(); // This will pass assertEquals( newNumPages, detachedChapter.getNumPages()); } protected void prepTestObjects() throws Exception { b = new Book(); b.setTitle( "JDO 4eva"); c1 = new Chapter(); c1.setTitle( "Intro"); c1.setNumPages( 10); b.getChapters().add( c1); c2 = new Chapter(); c2.setTitle( "Configuration"); c2.setNumPages( 9); b.getChapters().add( c2); pm = pmf.getPersistenceManager(); pm.setDetachAllOnCommit( true); try { pm.currentTransaction().begin(); pm.makePersistent( b); pm.currentTransaction().commit(); } finally { if (pm.currentTransaction().isActive()) { pm.currentTransaction().rollback(); } pm.close(); } } /** * From http://gae-java-persistence.blogspot.com/2009/10/creating-bidrectional-owned-one-to-many.html */ @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true") public class Book { // Prefer String encodedKey over Key class object since it's sharable with client via serialization @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension( vendorName = "datanucleus", key = "gae.encoded-pk", value="true") protected String encodedKey; protected String title; @Persistent(mappedBy = "book", defaultFetchGroup="true") @Element( dependent = "true") protected List<Chapter> chapters = new ArrayList<Chapter>(); - getter and setters - } @PersistenceCapable( identityType = IdentityType.APPLICATION, detachable = "true") public class Chapter { // Prefer String encodedKey over Key class object since it's sharable with client via serialization @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension( vendorName = "datanucleus", key = "gae.encoded-pk", value="true") protected String encodedKey; protected String title; protected int numPages; @Persistent( defaultFetchGroup = "true") protected Book book; - getter and setters - } -- 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]<google-appengine-java%[email protected]> . For more options, visit this group at http://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.
