回答
「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. 使用twitter搜索API收集數據
- 2. 在數據庫中靈活搜索
- 3. MongoDB獲取收集數據類型
- 4. 搜索大型數據集
- 5. 用於數據收集系統的靈活Web表單
- 6. 靈活類型和通用參數
- 7. oracle批量收集和讀取數據
- 8. Interop.Excel - 讀取數據類型
- 9. 在大型數據集中搜索
- 10. 在Rails中搜索大型數據集
- 11. ios coredata搜索大型數據集
- 12. 如何搜索大型XML數據集?
- 13. 彈性搜索。使用滾動方法讀取大型數據集,但「掃描」爲搜索類型不起作用
- 14. 使用Linq搜索多項數據集
- 15. 從arduino收集'double'類型的數據
- 16. Python:搜索/讀取二進制數據
- 17. 具有靈活索引的數據庫?
- 18. 靈活的搜索客戶SQL
- 19. PHP在CSV文件上靈活(?)搜索
- 20. 靈活MySQL的搜索查詢
- 21. 使用grep SQL數值數據類型搜索
- 22. 從C++函數中返回一個靈活的數據類型
- 23. 數字數據類型自動失去靈活性
- 24. Cassandra - 使用CQL將數據插入嵌套收集類型
- 25. 在varbinary數據類型上使用全文搜索來搜索文件內容
- 26. XML數據類型的搜索查詢
- 27. 創建用於收集數據的搜索插件
- 28. 搜索在MongoDB中收集
- 29. neo4j和java收集搜索
- 30. 靈活的搜索或使用三個表的sql查詢?
看看這裏:http://stackoverflow.com/questions/28230779/difference-between-relations -and-collections-in-hybris/37239837#37239837 – KilleKat