如何在无主关系模型中查询JDO持久对象?

时间:2010-06-14 13:12:13

标签: google-app-engine persistence entity-relationship jdo

我正在尝试将我的应用程序从PHP和RDBMS(MySQL)迁移到Google App Engine,并且很难在JDO中找出数据模型和关系。在我当前的应用程序中,我使用了很多JOIN查询,如:

SELECT users.name, comments.comment
FROM users, comments
WHERE users.user_id = comments.user_id
AND users.email = 'john@example.com'

据我所知,这种方式不支持JOIN查询,因此存储数据的唯一(?)方式是使用无主关系和“外来”键。有关于此的文档,但没有有用的示例。到目前为止,我有这样的事情:

@PersistenceCapable
public class Users {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent
    private String name;
    
    @Persistent
    private String email;
    
    @Persistent
    private Set<Key> commentKeys;

    // Accessors...
}

@PersistenceCapable
public class Comments {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent
    private String comment;
    
    @Persistent
    private Date commentDate;

    @Persistent
    private Key userKey;

    // Accessors...
}

那么,如何在一个查询中获得包含评论者姓名,评论和日期的列表?我看到我可能如何逃脱3个查询,但这似乎是错误的,并会产生不必要的开销。请帮我解决一些代码示例。

- 保罗。

1 个答案:

答案 0 :(得分:0)

只能评论那个

的有效JDOQL

选择this.name,commentVar.comment FROM mydomain.Users 在哪里this.key == commentVar.userKey&amp;&amp; this.email ='john@example.com' VARIABLES mydomain.Comments commentVar

GAE / J是否认为实施它是由谷歌回答。