2009-07-17 6 views
0

У меня есть объект курса, который содержит набор ключей для моего объекта тега. Как я могу создать запрос для получения списка курсов с определенным тегом? Например, я хочу найти все курсы, помеченные java.Набор запросов Google DataStore

Вот мои объекты:

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true") 
public class Course{ 

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

@Persistent private Set<Key>  tags; 
//etc 
} 

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true") 
public class Tag{ 

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

    @Persistent private String tagText; 
} 
+1

Как добавленное примечание, с данным хранилищем google, поскольку у вас нет объединений, часто бывает неплохо денормализовать ваши данные. То есть, используйте теги Set вместо того, чтобы направлять их по типу Tag. – bdonlan

+0

Это было бы идеально, однако для моего объекта тега больше, чем просто строки. – KevMo

ответ

3
Tag tag = getTagFromString("java"); 
Key tagKey = tag.getKey(); // i will assume you have a getKey() method 

PersistenceManger pm = PMF.get().getPersistenceManager(); 
Query q = pm.newQuery(Course.class); 
q.setFilter("tags == :tagParam"); 

List<Course> coursesTaggedWithJava = (List<Course>) q.execute(tagKey); 
0

Я не думаю, что это возможно. Google DataStore не позволяет использовать запросы Join. Но я могу ошибаться.

Here и here - сайт, на котором вы можете найти более подробную информацию о GQL.

Смежные вопросы