У меня есть примеры создания отношений родитель / потомок с использованием GAE / JPA в моем проекте jappstart . Посмотрите, как сущности, связанные с аутентификацией, связаны друг с другом здесь .
Один-на-один (см. UserAccount.java и PersistentUser.java):
// parent
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private PersistentUser persistentUser;
// child
@OneToOne(mappedBy = "persistentUser", fetch = FetchType.LAZY)
private UserAccount userAccount;
Один-ко-многим (см. PersistentUser.java):
@OneToMany(mappedBy = "persistentUser", cascade = CascadeType.ALL)
private Collection<PersistentLogin> persistentLogins;
Много-к-одному (см. PersistentLogin.java):
@ManyToOne(fetch = FetchType.LAZY)
private PersistentUser persistentUser;
Кроме того, обратите внимание в конструкторах, как KeyFactory используется для сущностей с родительским элементом и без родительского элемента.
@Id
private Key key;
// this entity has a parent
public PersistentUser(final Key key, final String username) {
this.key = KeyFactory.createKey(key, getClass().getSimpleName(), username);
...
}
// this entity does not have a parent
public UserAccount(final String username) {
this.key = KeyFactory.createKey(getClass().getSimpleName(), username);
....
}
Надеюсь, это полезно для вас. Я не могу сказать по вопросу, используете ли вы JPA или JDO.