B list is missing from class A in my previous posting.  Here is the complete
A class...

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class A {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    @Extension(vendorName = "datanucleus", key="gae.encoded-pk",
value="true")
    private String id;

    @Persistent
    @Extension(vendorName = "datanucleus", key="gae.pk-name", value="true")
    private String name;

    @Persistent
    private List<B> bList ;
}

On Fri, Feb 5, 2010 at 4:32 PM, aswath satrasala <[email protected]
> wrote:

> This is a similar posting I had posted earlier "incorrect number of
> entities returned".  Hopefully, this posting may be more clean and I will
> get some replies.
> I have two classes
> 1) A
> 2) B
> A is in 1 to many relationship with B
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class A {
>     @PrimaryKey
>     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>     @Extension(vendorName = "datanucleus", key="gae.encoded-pk",
> value="true")
>     private String id;
>
>     @Persistent
>     @Extension(vendorName = "datanucleus", key="gae.pk-name", value="true")
>     private String name;
> }
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class B {
>     @PrimaryKey
>     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>     @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value =
> "true")
>     private String id;
>
>     @Persistent
>     @Extension(vendorName = "datanucleus", key = "gae.pk-name", value =
> "true")
>     private String name;
> }
>
> public class BTest extends JDOTestCase {
>
>     public void testB() throws Exception {
>         A a = new A();
>         a.setName("a");
>         B b = new B();
>         b.setName("b");
>         a.getBList().add(b);
>
>         beginTxn();
>         pm.makePersistent(a);
>         a = pm.getObjectById(A.class, a.getId());
>         assertEquals(1, a.getBList().size());
>         commitTxn();
>
>         B b1 = new B();
>         b1.setName("b1");
>         beginTxn();
>         pm.makePersistent(b1);
>         b1 = pm.getObjectById(B.class, b1.getId());
>         b1.getId();
>         commitTxn();
>     }
> }
>
> The test fails at the last line "b1.getId()"
> If any of B entity is in relation with A earlier, then another entity of B
> cannot be persisted by itself.
>
> If I move the 2nd transaction to the beginning, the test passes.
>
> -Aswath
>
>
>

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

Reply via email to