2009-07-17 120 views
0

我有一个课程实体,其中包含我的标记实体的一组键。我将如何去创建一个查询来获取具有特定标签的课程列表?例如,我想找到所有用java标记的课程。谷歌数据存储查询集

这里是我的实体:

@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

作为一个补充说明,对于谷歌数据存储,由于您没有连接,所以将数据非标准化一点通常是一个好主意。也就是说,有一个设置标记,而不是通过标记类型来获取它。 – bdonlan 2009-07-17 19:05:36

回答

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查询。但我可能错了。

Herehere是网站,您可以找到更多关于GQL的信息。

相关问题