Hello GAE team,
Can you please look into this and let me know what is wrong in the test
case.  Similar tests fail are happening in my other test cases with similar
relations.

Thanks
-Aswath

On Mon, Feb 22, 2010 at 2:57 PM, aswath satrasala <
aswath.satras...@gmail.com> wrote:

> I am creating two instances of B. In the first instance, I am making it as
> a child of A.  In the second instance, it is by itself.  The second instance
> cannot persist itself.  Hence, I am raising this issue and thinking it as a
> bug.
>
> Is the owned-relationship at the class level?
> I think it is at the entity level.
>
> Can someone from Google team, please confirm on this.
>
> -Aswath
>
>
> On Mon, Feb 22, 2010 at 2:26 PM, Payam <pmoghad...@gmail.com> wrote:
>
>> Hmm...
>>
>> If JDO does not allow unowned relationships, then when you are trying
>> to persist B inside A, then trying to persist B by itself, are you not
>> declaring that B is actually unowned? In this case, A can not actually
>> hold onto B directly and can only hold its Key instead. When I read
>> the documentation, I understood "owned" relationships as an Object
>> (e.g. B) is always found in another object (e.g. A) and never by
>> itself.
>>
>> Do you think that could be it? Although its weird that the 2nd
>> transaction works when you move it around. Does it actually store two
>> different Bs?
>> These are all ideas. Not sure honestly...
>>
>> On Feb 21, 10:24 pm, aswath satrasala <aswath.satras...@gmail.com>
>> wrote:
>> > Hello Payam
>> > Thanks for looking into this.  Please see inline
>> >
>> >
>> >
>> >
>> >
>> > On Sun, Feb 21, 2010 at 3:25 PM, Payam <pmoghad...@gmail.com> wrote:
>> > > Hello Aswath,
>> >
>> > > What you are doing seems really odd to me. From my understanding a
>> > > Datastore Key consists of multiple components.
>> > > "A complete key includes several pieces of information, including the
>> > > application ID, the kind, and an entity ID" - GAE Docs
>> >
>> > > If you use encoded key strings, you can get access to these other
>> > > pieces of information:
>> > > @PrimaryKey
>> > > @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>> > > @Extension(vendorName="datanucleus", key="gae.encoded-pk",
>> > > value="true")
>> > > private String encodedKey;
>> >
>> > > @Persistent
>> > > @Extension(vendorName="datanucleus", key="gae.pk-name", value="true")
>> > > private String keyName;
>> >
>> > > @Persistent
>> > > @Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
>> > > private Long keyId;
>> >
>> > > In this case, you have access to the name ID (keyName) and numeric ID
>> > > (keyID) of the encoded key. Therefore, from my understanding, you can
>> > > not change the name ID after you have persisted your first object. The
>> > > first object determines the name ID for all remaining objects (from my
>> > > understanding). This is why when you try to change it for the second
>> > > object, you get an exception.
>> >
>> > Your understanding is not documented.  Please see 'encodedStrings'
>> inhttp://code.google.com/appengine/docs/java/datastore/creatinggettinga..
>> ..
>> >
>> >
>> >
>> > > Perhaps, you can better explain why you are using the "gae.pk-name"
>> > > extension for the name. The context of your code is not clear!
>> >
>> > "When using encoded key strings, you can provide access to an object's
>> > string or numeric ID with an additional field:"
>> > I am using the gae-pk-name, so that I can identity the entity uniquely.
>> > - if it is associated with a parent, I do, KeyFactory.createKey
>> (parentkey,
>> > kind, name)  and then access the entity.
>> > - if it is not associated with the parent, I do
>> KeyFactory.createKey(kind,
>> > name)  and then access the entity.  I use this entity to store default
>> > values for the entity in my application.
>> >
>> > Thanks,
>> > -Aswath
>> >
>> > Thanks!
>> >
>> >
>> >
>> >
>> >
>> > > On Feb 16, 11:38 pm, aswath satrasala <aswath.satras...@gmail.com>
>> > > wrote:
>> > > > any help on this please...
>> >
>> > > > Thanks.
>> >
>> > > > On Fri, Feb 12, 2010 at 3:18 PM, aswath satrasala <
>> >
>> > > > aswath.satras...@gmail.com> wrote:
>> > > > > Hello Ikia
>> > > > > As suggested by you in the thread 'Incorrect number of entities
>> > > returned',
>> > > > > I have attached the complete files in my previous email.
>> > > > > Please let me know, what am I doing wrong here.
>> >
>> > > > > Thanks
>> > > > > -Aswath
>> >
>> > > > > On Tue, Feb 9, 2010 at 3:06 PM, aswath satrasala <
>> > > > > aswath.satras...@gmail.com> wrote:
>> >
>> > > > >> Hello Ikai,
>> > > > >> Attached is the zip file that contains three files
>> > > > >> A.java
>> > > > >> B.java
>> > > > >> BTest.java
>> >
>> > > > >> Please load in your environment and test it.
>> >
>> > > > >> Thanks.
>> > > > >> -Aswath
>> >
>> > > > >> On Fri, Feb 5, 2010 at 4:36 PM, aswath satrasala <
>> > > > >> aswath.satras...@gmail.com> wrote:
>> >
>> > > > >>> 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 <
>> > > > >>> aswath.satras...@gmail.com> 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
>> > > google-appengine-j...@googlegroups.com.
>> > > To unsubscribe from this group, send email to
>> > > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com><google-appengine-java%2B
>> unsubscr...@googlegroups.com>
>> > > .
>> > > 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
>> google-appengine-j...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
>> .
>> 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 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.

Reply via email to