2010-06-14 55 views
0

我試圖將我的應用程序從PHP和RDBMS(MySQL)遷移到Google App Engine,並且很難搞清楚JDO中的數據模型和關係。 (?):在我目前的應用程序,我使用了大量的連接查詢的,像這樣的唯一的方式來存儲數據使用無主的關係,並如何查詢無主關係模型中的JDO持久化對象?

SELECT users.name, comments.comment 
FROM users, comments 
WHERE users.user_id = comments.user_id 
AND users.email = '[email protected]' 

據我瞭解,連接查詢通過這種方式,不支持「洋」鍵。有關於這個的文檔,但沒有有用的例子。到目前爲止,我有這樣的事情:

@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個查詢,但這似乎是錯誤的,並會造成不必要的開銷。請幫我看一些代碼示例。

- Paul。

+0

同時執行連接會創建開銷。我寧願在'Users'對象上放置'Set '而不是'Set '。我建議在類名中也使用單數。 – hleinone 2010-06-14 16:57:13

回答

0

只能從mydomain.Users WHERE this.key == commentVar.userKey & & this.email =「約翰@例如對什麼是有效的JDOQL對於

SELECT this.name,commentVar.comment評論.com' VARIABLES mydomain.Comments commentVar

是否GAE/J認爲實施它是爲谷歌回答。

相關問題