回答
“CollectionTypes基于Java Collection类。”
CollectionType数据库字段的最大长度是有限的,所以有可能会得到它截断值的机会,由于多条记录。另外,CollectionType的值以CSV格式写入,而不是以规范化的方式写入。 Hybris建议尽可能在CollectionType上使用RelationTypes。
集合存储如何值:
- 如果CollectionType包含AtomicTypes,该值存储在数据库中的二进制字段。
- 如果CollectionType存储项目集合,则项目的主键(PK)以字符串形式(PK列表)存储在数据库中。
优势:
- 作为一个CollectionType实例的所有值存储为一个单独的领域,阅读和写作的价值是相当快的,因为它在完成一个数据库访问(特别是使用缓存)。
缺点:
如果一个集合包含了很多的PK中,字段值可能达到字段的最大长度为数据库实施和项目可能会被截断。
由于数据库条目仅包含PK,而不是项目,因此无法直接在条目上运行数据库搜索。相反,您需要通过Java在内存中运行搜索,这通常比直接在数据库上搜索要慢。
它记录在FlexibleSearch Tips and Tricks - 灵活的搜索和收藏
你有订单和VoucherCard的情况。这也正是集合元素类型必须持有集合(该vouchercards作为裁判的顺序)
SELECT {vc.PK}, {vc.price}
FROM
{
Order AS o JOIN VoucherCard AS vc
ON {vc.order}= {o.pk}
}
WHERE {o.PK} = ?order
那你有没有情况元件和持有人之间的参考项目的引用的为例。您可以使用基于该集合属性存储为PK s的名单事实上,一些解决方法:
SELECT {dm.code}, {pm.code}
FROM
{
DeliveryMode AS dm JOIN PaymentMode AS pm
ON {dm.supportedpaymentmodes} LIKE CONCAT('%', CONCAT({pm.PK} , '%'))
}
我测试了集合(第二个)的查询,但它不工作。在items.xml中,supportedPaymentmodes有修饰符search =“false”。不知道是我做错了什么,或者wiki有错误的查询。 – Evgenii
事实上,“搜索”属性doc说 - >“定义该属性是否可以通过灵活搜索来搜索。根据hybris的版本,它可能会改变。无论如何,第二个例子不是最好的,因为不应该再使用集合。 –
- 1. 在数据库中灵活搜索
- 2. MongoDB获取收集数据类型
- 3. 搜索大型数据集
- 4. 用于数据收集系统的灵活Web表单
- 5. 灵活类型和通用参数
- 6. oracle批量收集和读取数据
- 7. 如何搜索大型XML数据集?
- 8. 在大型数据集中搜索
- 9. 弹性搜索。使用滚动方法读取大型数据集,但“扫描”为搜索类型不起作用
- 10. 使用Linq搜索多项数据集
- 11. Python:搜索/读取二进制数据
- 12. 具有灵活索引的数据库?
- 13. 灵活的搜索客户SQL
- 14. 从C++函数中返回一个灵活的数据类型
- 15. 数字数据类型自动失去灵活性
- 16. Cassandra - 使用CQL将数据插入嵌套收集类型
- 17. 在varbinary数据类型上使用全文搜索来搜索文件内容
- 18. XML数据类型的搜索查询
- 19. 创建用于收集数据的搜索插件
- 20. 搜索在MongoDB中收集
- 21. 使用nHibernate实现灵活的搜索基础架构
- 22. 灵活的搜索或使用三个表的sql查询?
- 23. 如何使用parse.com制作更灵活的搜索查询
- 24. 如何在Hybris灵活搜索查询中使用日期?
- 25. 搜索HDF5数据集
- 26. 全文搜索数据集
- 27. Python搜索数据集
- 28. 搜索从数据集中
- 29. 使用二进制搜索树与自定义数据类型?
- 30. jqGrid - 如何使用数据类型进行搜索:local或loadonce:true
看看这里:http://stackoverflow.com/questions/28230779/difference-between-relations -and-collections-in-hybris/37239837#37239837 – KilleKat