I've got a question regarding this.
Isn't it kind of "nicer" regarding the design to not store relational
Attributes in a core table/class. In the given example I would
implement this like this:
@PersistenceCapable
public class Categories
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long Id;
No owned or unowner object here
...
}
@PersistenceCapable
public class CategoryGroups
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long Id;
...
}
@PersistenceCapable
public class CategoryGroupRelation {
@PrimaryKey
@Persistent(mappedBy="category")
private Long categoryId;
@Persistent(mappedBy="categorygroups"
private Long categoryGroupId;
}
Isn't it better to design the tables this way? I don't like relational
attributes in a core database class. What do you think?
Greets
Poe
On 7 Jul., 01:25, AC <[email protected]> wrote:
> Thanks. That answers my question.
>
> On Jul 6, 3:18 pm, Ravi Sharma <[email protected]> wrote:
>
>
>
> > You need to understand the concept of Entity group here, and need to
> > understand the owned relation and unowned relation.
> > Think of owned and unowned relation like this
> > You(your house) and your TV has owned relationship, your house has TV, no ne
> > can see it from outside, and if your friend want the same tv he need to buy
> > the same TV and own it. And at one point if you ask who all watching my TV
> > then it will be just you not your friend as he has his own TV(although same
> > kind of TV).
>
> > But You and your favourite movie theatre has unowned relationship, you dont
> > own it, anyone who knows the address of theatre can go and watch movie. and
> > at one moment 1000s of people might be watching the same movie/theatre
>
> > Back to your question.....
>
> > Categories(3)/CategoryGroups(4) is an example for owned relation.
> > CategoryGroup(4) will be available to Category(3) only and if you create
> > another category Cateory(10) with same category group it will just create
> > another version of categoryGroup CategoryGroup(11) in that category. But you
> > may see that CategoryGroup 11 and CategoryGroup 4 both are Entertainment.
>
> > In your case many categories can have same categoryGroup.So instead of using
> > owned relationship, you should use unowned relationship.
>
> > Instead of this
> > @Persistent
> > private CategoryGroups Group;
>
> > define this
> > @Persistent
> > private Key categoryGroupId;
>
> > and save key of CategoryGroup rather then full object. (Dont buy a TV for
> > every other rmovie you want to watch, just buy a movie theatre ticket go
> > there and use that :) )
>
> > I hope u get the idea, you can learn more from here....
>
> >http://code.google.com/appengine/docs/java/datastore/relationships.html
>
> > spare me if you dont like my example... :)
>
> > Ravi.
>
> > On Tue, Jul 6, 2010 at 5:47 PM, AC <[email protected]> wrote:
> > > I just started fooling around w/ GAE this weekend.
>
> > > I have a Categories class and a CategoryGroup class. The idea is that
> > > every category must be grouped. For example the CategoryGroup
> > > "Entertainment" can be assigned to many Categories, such as "movies",
> > > "music" and "television".
>
> > > Here are my classes.
>
> > > @PersistenceCapable
> > > public class Categories
> > > {
> > > �...@primarykey
> > > �...@persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
> > > private Key Id;
>
> > > �...@persistent
> > > private CategoryGroups Group;
>
> > > �...@persistent
> > > private boolean IsDeleted;
>
> > > �...@persistent
> > > private String Name;
>
> > > �...@persistent
> > > private Date CreateDate;
>
> > > �...@persistent
> > > �...@column(allowsNull="true")
> > > private Date ModifiedDate;
> > > }
>
> > > @PersistenceCapable
> > > public class CategoryGroups
> > > {
> > > �...@primarykey
> > > �...@persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
> > > private Key Id;
>
> > > �...@persistent
> > > boolean IsDeleted;
>
> > > �...@persistent
> > > String Name;
>
> > > �...@persistent
> > > Date CreateDate;
>
> > > �...@persistent
> > > �...@column(allowsNull="true")
> > > Date ModifiedDate;
> > > }
>
> > > First I add a record to CategoryGroups. When I query all, the reult
> > > is :
>
> > > CategoryGroups(2)
>
> > > Next, I add a record to Categories. When I query all CategoryGroups,
> > > the result is :
>
> > > Categories(3)/CategoryGroups(4)
> > > CategoryGroups(2)
>
> > > I do not doubt that this works as it was designed to, however, coming
> > > from a RDBMS background, this is very confusing to me. The screen I
> > > created to manage Categories now has "Entertainment" listed twice in
> > > the CategoryGroups select box. Is there a better approach to achieve
> > > my goal?
>
> > > Any advice is much appreciated.
>
> > > --
> > > 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%2B
> > > [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.