编程语言
首页 > 编程语言> > java-在JDO中实现标记

java-在JDO中实现标记

作者:互联网

我正在为使用JDO的网站实现标记系统.
我想使用this方法.

但是,我对JDO中的关系是陌生的.
为了简单起见,我的内容如下所示:

@PersistentCapable
class Post {
@Persistent String title;
@Persistent String body;
}

@PersistentCapable
class Tag {
@Persistent String name;
}

我需要什么样的JDO关系以及如何实现它们?我希望能够列出属于某个帖子的所有标签,并且还希望列出具有给定标签的所有帖子.所以最后我想拥有这样的东西:

Table: Post
Columns: PostID, Title, Body

Table: Tag
Columns: TagID, name

Table: PostTag
Columns: PostID, TagID

解决方法:

您应该看:http://code.google.com/appengine/docs/java/datastore/relationships.html#Unowned_Relationships

基本上,您会创建一个Class PostTag,它的主键中的appart对于每个关系也都有两个Key字段:

@PersistentCapable
class PostTag {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key; 
    /*you should add this to Post and Tag as well,
    since this is what the fields in PostTag will reference
    you can rename them to ClassnameID if you like, I believe*/

    @Persistent
    private Key post;

    @Persistent
    private Key tag;
}

然后,当您创建PostTag时,您应该执行以下操作

PostTag pt = new PostTag();
pt.setPost(post.getKey());
pt.setTag(tag.getKey());
// persist pt here;

我在这里使用了getters / setter方法,因为您通常将字段设置为private并通过访问器方法访问它们,但这就是您的要求.上面片段中的“ post”和“ tag”也应该是您要链接的持久对象.

编辑:您可能还应该看一下:http://code.google.com/appengine/docs/java/datastore/usingjdo.html#Unsupported_Features_of_JDO,因为应用程序引擎仅部分实现了JDO(我相信是由于与传统数据库相比,数据存储的工作方式不同).他们可能会在将来增加对缺少功能的支持.

标签:jdo,google-app-engine,orm,java
来源: https://codeday.me/bug/20191210/2098814.html