Я пытаюсь перенести свое приложение с 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 = '[email protected]'
Насколько я понимаю, запросы 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 запросами, но это кажется неправильным и создаст ненужные накладные расходы. Пожалуйста, помогите мне с некоторыми примерами кода.
-- Павел.
Set<Comments>
вместоSet<Key>
на объектUsers
. Я предлагаю также использовать единственное число в именах классов. - person hleinone   schedule 14.06.2010