Java JDOQL(Appengine)-使用列表作为参数查询所有/一项?
我正在尝试创建一个查询,以便给定列表(参数)的所有项都包含在表的列(也是列表)中。我还需要一个查询,以便表的列中至少包含给定列表(参数)的一项。例如: JDO:Java JDOQL(Appengine)-使用列表作为参数查询所有/一项?,java,google-app-engine,jdo,jdoql,Java,Google App Engine,Jdo,Jdoql,我正在尝试创建一个查询,以便给定列表(参数)的所有项都包含在表的列(也是列表)中。我还需要一个查询,以便表的列中至少包含给定列表(参数)的一项。例如: JDO: Table: User | ID | Name | Interests <List of Strings> | List <String> gifts; // Item to query with 表:用户 |身份证|姓名|权益| 查询: Table: User | ID | Name | Interest
Table: User
| ID | Name | Interests <List of Strings> |
List <String> gifts; // Item to query with
表:用户
|身份证|姓名|权益|
查询:
Table: User
| ID | Name | Interests <List of Strings> |
List <String> gifts; // Item to query with
列出礼物;//要查询的项目
.contains()
关键字进行这些查询吗?如果是,那怎么办?有人能分享一些例子吗?任何帮助都将不胜感激
谢谢。为了了解这类查询是如何工作的(或不工作的),了解数据存储如何索引实体很重要。插入具有列表属性的实体时,数据存储会将每个列表条目拆分为单独的索引行。例如,以下实体:
Entity(User):
id=15
name="Jim"
interests=["Drinking", "Banjos"]
将在自动索引中生成以下索引项:
(User, "id", 15, Key("User", 1))
(User, "name", "Jim", Key("User", 1))
(User, "interests", "Drinking", Key("User", 1))
(User, "interests", "Banjos", Key("User", 1))
如果还对(名称、兴趣)定义了复合索引,则其中的条目将如下所示:
("Jim", "Drinking", Key("User", 1))
("Jim", "Banjos", Key("User", 1))
有了这一点,我们可以解决您的特定查询,顺序如下:
对于数字1和3,你可以做一个更粗的过滤——例如,搜索一个或两个兴趣点——然后在内存中过滤结果以获得精确匹配。Ahhh我明白了。非常感谢你。这正是我需要知道的!