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