查询“Set”与特定字符串匹配的所有实体?

时间:2010-07-14 07:45:51

标签: java google-app-engine jdo

如何查询使用GAE存储的对象列表,其中Set字段包含指定的字符串?想象一下这个想象中的例子:

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

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

假设“数据库”中有40,000张照片,我如何Query所有照片tag='2009'

或者google文档中的另一个示例,如果您有以下类:

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

    @Persistent
    private Set<Key> favoriteFoods;

    // ...
}

如何获取所有具有特定收藏食物密钥的所有Person对象的列表?

2 个答案:

答案 0 :(得分:1)

你会如何用Java做到这一点? collField.contains(:StringParam中)

答案 1 :(得分: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);