我们无法将AccommodationOffering(这是一个仓库)的类别索引到Solr。 以与Product相同的方式创建了从AccommodationOffering到Category的多对多关系,称为“超级类别”。
聚合信息存在于数据库级别,并且可以通过Spring通过HAC的常规查询来检索。您还可以从HMC看到信息,并且该信息关联良好,但是从提供者处查询时,数据始终为空。因此,我们不知道是否有影响此字段的拦截器使您始终返回空值,这就是为什么您无法向Solr添加类别的原因。
由于它不是产品,所以DefaultCategorySource类得到了扩展,根据我们的需要,其中的getDirectSuperCategories()方法如下:
受保护的set getDirectSuperCategories(最终Set产品) { 最终Set类别=新的HashSet();
for (final AccommodationOfferingModel product: products)
{
// This code snippet is originally used but returns empty
/ * final Collection <CategoryModel> directCategories = getModelService ()
.getAttributeValue (product, getCategoriesQualifier ()); * /
// Attempt to bring the complete object but the supercategories attribute is still empty
final AccommodationOfferingModel auxAccom = modelService.get (product.getPk ());
final Collection <CategoryModel> directCategories = auxAccom.getSupercategories ();
if (directCategories! = null &&! directCategories.isEmpty ())
{
categories.addAll (directCategories);
}
}
return categories;
}
使用Solr编制索引时会调用此方法,这是我们无法检索类别以将其编制为Solr的地方。