> The ID for the owned child User instances has to be a Key or String type 
> because the it contains both the reference to the parent(s) and the unique id 
> of the object.  A Long alone will not contain enough information to navigate 
> the object model to it.

That statement doesn't make sense to me. The relationship from Event -
> User is uni-directional so it isn't necessary to have a link from
User back to Event.

> You can create/encode/decode Keys easily using the KeyFactory.
I want to create a portable JPA domain model and that is why I coded
my model as such. I would like the option to be able to move this
model from GAE over to MySQL... so I don't really like the requirement
to use a String key either.

Perhaps this information need to be added to the unsupported features
section? (Long ids and relationships don't play nicely.)

Thanks,
Rick

On Oct 11, 10:33 pm, andy stevko <[email protected]> wrote:
> The ID for the owned child User instances has to be a Key or String type
> because the it contains both the reference to the parent(s) and the unique
> id of the object.  A Long alone will not contain enough information to
> navigate the object model to it. I usually stick with String ids for all my
> types.
>
> You can create/encode/decode Keys easily using the KeyFactory.
>
> On Mon, Oct 11, 2010 at 8:03 PM, Rick Curtis <[email protected]> wrote:
> > Hello all! I am new to GAE and have a pretty simple domain model that I'm
> > trying to persist. I am creating an Event(with a generated ID) and a
> > User(with a pre-defined ID) which is hosting the event. This is a one to one
> > relationship owned by the Event(@See below for code snippets).
>
> > Upon commiting the transaction, I'm getting an exception which states
> > "Error in meta-data for User._id: Cannot have a java.lang.Long primary key
> > and be a child object (owning field is Event._host)." I did some searching
> > and came across this[1] post which suggested that I need to change my key
> > from a java.lang.Long to a com.google.appengine.api.datastore.Key.
>
> > Since "The App Engine Java SDK includes an implementation of JPA 1.0 for
> > the App Engine datastore"[2]... I don't really need to use these internal
> > GAE classes to describe this mapping do I? Maybe I'm being a bit naive here,
> > but I have a hard time believing that this requirement/limitation is due to
> > the underlying database not being a relational database.
>
> > Hopefully someone can shed some light on my findings.
>
> > Thanks,
> > Rick
>
> > @Entity
> > public class Event {
> >     @Id
> >     @GeneratedValue(strategy=GenerationType.IDENTITY)
> >     Long _id;
>
> >     @OneToOne
> >     User _host;
> > ...
> > }
>
> > @Entity
> > public class User {
> >     @Id
> >     Long _id;
> > ...
> > }
>
> > [1]http://code.google.com/p/datanucleus-appengine/issues/detail?id=26
> > [2]http://code.google.com/appengine/docs/java/datastore/usingjpa.html
>
> > --
> > 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.

Reply via email to