2009-07-17 163 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的信息。