Appengine JDO, как я могу получить дочерний объект, зная дочернее свойство и родительский ключ? - PullRequest
0 голосов
/ 07 августа 2011

Используя диспетчер прав доступа, как я могу получить дочерний объект, зная дочернее свойство и родительский ключ?

Родитель определяется следующим образом:

public class User {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;

@Persistent(mappedBy = "user")
@Element(dependent = "true")
private List<Section> sections;
...

определяется следующим образом:

public class Section {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

@Persistent
private User user;

@Persistent
private String title;
...

Зная идентификатор пользователя и заголовок раздела, как я могу получить раздел ?.Я пытался создать запрос для извлечения раздела, используя что-то вроде этого: 'где title == xxx AND user.id ¿?== xxx 'но я не уверен, как указать идентификатор пользователя.Есть ли способ сделать это, используя запросы или методы из диспетчера персистенции?

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 августа 2011

Я наконец сделал это с помощью этого метода:

public static Section getSectionByTitle(String title, Key user_key){
    PersistenceManager pm = PMF.get().getPersistenceManager();  
    Query query = pm.newQuery("select from "+Section.class.getName()+" WHERE title == s && user == keyParam");
    query.declareParameters("String s, String k");
    query.setUnique(true);
    Section section = (Section) query.execute(title, user_key.getId());
    return section;
}
0 голосов
/ 07 августа 2011

Вы можете вызвать этот метод для объекта запроса:

q.setAncestor (ancestorKey);

Для получения дополнительной информации (1002 * *) для этой информации . * Запросы Ancestor.

Я помню, что видел что-то вроде синтаксиса «где ANCESTOR =», но сейчас я не могу найти ссылку на него.

...