Pergunta

Eu tenho uma entidade Course, que contém um conjunto de chaves para a minha entidade Tag. Como eu iria sobre a criação de uma consulta para obter uma lista dos cursos com uma tag específica? Por exemplo, eu quero encontrar todos os cursos marcados com java.

Aqui estão as minhas entidades:

@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;
}
Foi útil?

Solução

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);

Outras dicas

Eu não acho que isso é possível. O Google DataStore não permite usar consultas de junção. Mas posso estar enganado.

Aqui e aqui é o site onde você pode encontrar mais informações sobre GQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top