我正在尝试实施多对一关系。我计划将一个模型的一组键(数据存储实体键)存储在另一个模型的实体中List<String>
。
e.g。假设模型A(a1,a2,a3,a4)的4个实体分别具有数据存储键:key1,key2,key3和key4。现在我存储了一个模型B的实体,它有一个名为“ids”的属性为List<String>
。 “ids”将这些String
作为元素:key1,key2,key3和key4。
直到现在一切都很好。 但是,我现在如何查询每个ID的模型B?
我想做的是这样的事情:
query.setFilter(FilterOperator.EQUAL.of(ids,"key1"))
。
显然现在无法做到这一点。 现在我正在做的是获取每个B实体的ids属性,然后手动反序列化为字符串列表,然后检查密钥是否存在。
正如您所看到的,这是非常低效的。我该怎么办?我应该将这些映射存储在单独的模型中吗?我不想处理联接,但如果我不能得到除现有解决方案之外的任何其他内容,我将不得不这样做。
我没有使用JPA或JDO,我打算不使用它们。
任何帮助都将不胜感激。
答案 0 :(得分:0)
使用EQUAL过滤器的查询适用于值列表。确保在执行此查询时传递正确的值。
例如,如果您只在服务器端使用此实体,则可以存储List。
如果您在客户端需要此列表,并且始终存储同类实体的密钥,则可以存储用于创建这些列表的ids
(列表)或“名称”(列表)列表键。这将占用更少的空间。