2010-07-14 55 views
1

如何查詢使用GAE存儲的對象列表,其中Set字段包含指定的字符串?即想象一下這個虛構的例子:查詢「Set」與特定字符串匹配的所有實體嗎?

@PersistenceCapable 
class Photos { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    String name = ""; 
    Set<String> tag = new Hashset<String>(); 
} 

假設有40000張照片中的「數據庫」,我怎麼Query所有照片,其中tag='2009'

或者從谷歌的文檔再例如,如果您有下面的類:

@PersistenceCapable 
public class Person { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    @Persistent 
    private Set<Key> favoriteFoods; 

    // ... 
} 

如何獲取所有Person對象的列表,他們有一個特定的最喜歡的食物關鍵?

回答

1

你會如何做到這一點在Java? collField.contains(:StringParam中)

1

嘗試是這樣的,這基本上是從谷歌文檔採取:

Query query = pm.newQuery("select from com.example.Note where tag == tagname order by created"); 
query.declareParameters("String tagname"); 
return (List<Note>) query.execute(tag); 

按照下面的評論,這也似乎工作:

Query query = pm.newQuery("select from com.example.Note where tags.contains(tagname) order by created"); 
query.declareParameters("String tagname"); 
return (List<Note>) query.execute(tag); 
+1

如果您希望查詢符合JDO標準,請不要嘗試。你不能在Java中使用「Collection == String」,所以你不能在JDOQL中。您使用「包含(...)」 – DataNucleus 2010-07-14 15:44:29

相關問題