如何使用灵活搜索查看Hybris中收集类型中存储的数据列表?
我在某处读过它存储为PK,所以有可能以某种方式解析它吗?
答案 0 :(得分:1)
" CollectionTypes基于Java Collection类。"
CollectionType数据库字段的最大长度是有限的,因此可能会因许多记录而截断其值。此外,CollectionTypes的值以CSV格式写入,而不是以标准化方式写入。 Hybris建议尽可能在CollectionType上使用RelationTypes。
集合如何存储值:
优势:
缺点:
如果集合包含大量PK,则字段值可能达到数据库实现的最大字段长度,并且条目可能会被截断。
由于数据库条目仅包含PK而不包含项目,因此无法直接对条目执行数据库搜索。相反,您需要通过Java在内存中运行搜索,这通常比直接在数据库上搜索更慢。
答案 1 :(得分:0)
在FlexibleSearch Tips and Tricks - 灵活搜索和收藏中记录了
您有Orders和VoucherCard的情况。它是一个例子,其中集合元素类型具有对包含集合的项目的引用(作为订单引用的凭证卡)
SELECT {vc.PK}, {vc.price}
FROM
{
Order AS o JOIN VoucherCard AS vc
ON {vc.order}= {o.pk}
}
WHERE {o.PK} = ?order
然后你有一个案例,没有元素和持有人之间的参考。您可以根据以下事实使用一些解决方法:将集合属性存储为PK的列表:
SELECT {dm.code}, {pm.code}
FROM
{
DeliveryMode AS dm JOIN PaymentMode AS pm
ON {dm.supportedpaymentmodes} LIKE CONCAT( '%', CONCAT( {pm.PK} , '%' ) )
}
答案 2 :(得分:0)
您可以尝试以下方法。 vendorCodes
是列表。
INSERT_UPDATE B2BCustomer;pk[unique=true];uid;vendorCodes
"#% impex.exportItemsFlexibleSearch(""select {c.pk},{c.uid},{c.vendorCodes} from {B2BCustomer as c} order by {c.pk}"");"
答案 3 :(得分:0)
**Use the below logic if there is any attribute relationship mapping between two tables:**
SELECT {vc.PK}, {vc.price}
FROM
{
Order AS o JOIN VoucherCard AS vc
ON {vc.order}= {o.pk}
}
WHERE {o.PK} = ?order
**Use the below if there is no mapping between two tables:**
SELECT {dm.code}, {pm.code}
FROM
{
DeliveryMode AS dm JOIN PaymentMode AS pm
ON {dm.supportedPaymentModeInternal} LIKE CONCAT( '%', CONCAT( {pm.PK} , '%' ) )
}