Как запросить постоянные объекты JDO в модели несобственных отношений? - PullRequest
0 голосов
/ 14 июня 2010

Я пытаюсь перенести свое приложение из 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 голосов
/ 14 июня 2010

Может комментировать только то, что является действительным JDOQL для этого

ВЫБРАТЬ this.name, commentVar.comment ОТ mydomain.Users ГДЕ this.key == commentVar.userKey && this.email = 'john@example.com' ПЕРЕМЕННЫЕ mydomain.Comments commentVar

ответит ли GAE / J об этом, Google ответит.

...