在 Google App Engine DataStore (Java) 中存储和搜索字符串数组
Storing and Searching an Array of Strings in Google App Engine DataStore (Java)
我正在尝试实现多对一 关系。我计划将一个模型的一组键(数据存储实体键)存储在另一个模型的实体中作为 List<String>
。
例如假设模型 A 的 4 个实体(a1、a2、a3、a4)分别具有数据存储键:key1、key2、key3 和 key4。现在我将模型 B 的实体存储为 List<String>
,它有一个名为 "ids" 的 属性。 "ids" 有这些 String
作为元素:key1、key2、key3 和 key4。
到现在都还好。
但是我现在如何为这些 ID 中的每一个查询模型 B?
我想做的是这样的:
query.setFilter(FilterOperator.EQUAL.of(ids,"key1"))
.
显然这现在无法完成。
现在我正在做的是获取每个 B 实体的 ID 属性,然后手动反序列化为字符串列表,然后检查密钥是否存在。
如您所见,这是非常低效的。我应该如何接近这里?我应该将这些映射存储在单独的模型中吗?我不想处理连接,但如果除了当前解决方案我无法得到任何其他东西,我将不得不处理。
我没有使用 JPA 或 JDO,我也不打算使用它们。
如有任何帮助,我们将不胜感激。
带有 EQUAL 过滤器的查询适用于值列表。确保在执行此查询时传递正确的值。
例如,如果您只在服务器端使用此实体,则可以存储列表。
如果你在客户端需要这个列表,并且总是存储同类实体的键,你可以存储一个 ids
(List) 或 'names` (List) 的列表,用于创建这些密钥。这将花费更少 space.
我正在尝试实现多对一 关系。我计划将一个模型的一组键(数据存储实体键)存储在另一个模型的实体中作为 List<String>
。
例如假设模型 A 的 4 个实体(a1、a2、a3、a4)分别具有数据存储键:key1、key2、key3 和 key4。现在我将模型 B 的实体存储为 List<String>
,它有一个名为 "ids" 的 属性。 "ids" 有这些 String
作为元素:key1、key2、key3 和 key4。
到现在都还好。 但是我现在如何为这些 ID 中的每一个查询模型 B?
我想做的是这样的:
query.setFilter(FilterOperator.EQUAL.of(ids,"key1"))
.
显然这现在无法完成。 现在我正在做的是获取每个 B 实体的 ID 属性,然后手动反序列化为字符串列表,然后检查密钥是否存在。
如您所见,这是非常低效的。我应该如何接近这里?我应该将这些映射存储在单独的模型中吗?我不想处理连接,但如果除了当前解决方案我无法得到任何其他东西,我将不得不处理。
我没有使用 JPA 或 JDO,我也不打算使用它们。
如有任何帮助,我们将不胜感激。
带有 EQUAL 过滤器的查询适用于值列表。确保在执行此查询时传递正确的值。
例如,如果您只在服务器端使用此实体,则可以存储列表。
如果你在客户端需要这个列表,并且总是存储同类实体的键,你可以存储一个 ids
(List) 或 'names` (List) 的列表,用于创建这些密钥。这将花费更少 space.