Java 界错配误差

Java 界错配误差,java,hybris,Java,Hybris,我正在尝试添加一个属性“Collection”以显示在hybris B2C Accelerator的前台 到目前为止,我已经在projectName-Spring.xml文件中声明了以下bean: <alias name="defaultProductSpecialPopulator" alias="productSpecialPopulator" /> <bean id="defaultProductSpecialPopulator" class="de.hybris

我正在尝试添加一个属性“Collection”以显示在hybris B2C Accelerator的前台

到目前为止,我已经在projectName-Spring.xml文件中声明了以下bean:

<alias name="defaultProductSpecialPopulator" alias="productSpecialPopulator" />
    <bean id="defaultProductSpecialPopulator" class="de.hybris.electronics.facades.populators.ProductSpecialPopulator" scope="prototype">
        <property name="modelService" ref="modelService" />
    </bean>

    <alias name="defaultProductConfiguredPopulator" alias="productConfiguredPopulator" />
    <bean id="defaultProductConfiguredPopulator" class="de.hybris.platform.commercefacades.converter.impl.DefaultConfigurablePopulator">
        <property name="populators">
            <map key-type="de.hybris.platform.commercefacades.product.ProductOption">
                <entry key="SPECIAL" value-ref="productSpecialPopulator" />
            </map>
        </property>
    </bean>

在ProjectName-core.xml文件中,我添加了属性集合:

    <typegroup name="Product">
    <itemtype code="Product" autocreate="false" generate="false">
        <description>Pending description...</description>
        <attributes>
            <attribute qualifier="collection" type="java.lang.String">
                <description>Pending description...</description>
                <persistence type="property"></persistence>
            </attribute>
        </attributes>
    </itemtype>
</typegroup>

挂起的描述。。。
挂起的描述。。。
但是,当我实现populator时,我得到了以下错误:

绑定不匹配:类型目标不是 类型的有界参数 抽象产品填充器

以下是问题中的人口:

package de.hybris.electronics.facades.populators;

import de.hybris.electronics.facades.product.data.ProductData;
import de.hybris.platform.commercefacades.product.converters.populator.AbstractProductPopulator;
import de.hybris.platform.core.model.product.ProductModel;
import de.hybris.platform.servicelayer.dto.converter.ConversionException;


public class ProductSpecialPopulator<SOURCE extends ProductModel, TARGET extends ProductData>
        extends AbstractProductPopulator<SOURCE, TARGET>
{


    @Override
    public void populate(final ProductModel source, final ProductData target) throws ConversionException
    {
        target.setCollection(source.getCollection());
    }

}
package de.hybris.electronics.facades.populators;
导入de.hybris.electronics.facades.product.data.ProductData;
导入de.hybris.platform.commercefacades.product.converters.populator.AbstractProductPopulator;
导入de.hybris.platform.core.model.product.ProductModel;
导入de.hybris.platform.servicelayer.dto.converter.ConversionException;
公共类ProductSpecialPopulator
扩展AbstractProductPopulator
{
@凌驾
public void populate(最终产品模型源、最终产品数据目标)引发ConversionException
{
target.setCollection(source.getCollection());
}
}
错误本身由此行中的目标引发:

        extends AbstractProductPopulator<SOURCE, TARGET>
扩展AbstractProductPopulator
下面是AbstractProductPopulator的定义:

public abstract class AbstractProductPopulator<SOURCE extends ProductModel, TARGET extends ProductData>
        implements Populator<SOURCE, TARGET>
公共抽象类AbstractProductPopulator
工具填充器

我认为问题的原因是ProductSpecialPopulator使用de.hybris.electronics.facades.product.data.ProductData

AbstractProductPopulator最有可能使用de.hybris.platform.commercefacades.product.data.ProductData

因此,导致错误的是两个不同的类(包不同,但名称相同,即ProductData)

很可能存在一个extensionName-beans.xml文件,其中ProductData的bean定义如下class=“de.hybris.electronics.facades.product.data.ProductData”
而不是class=“de.hybris.platform.commercefacades.product.data.ProductData”,这应该是向现有的hybris产品数据添加属性的正确方法

AbstractProductPopulator
不是“公共”的东西,您可以发布它的类定义吗(即,行
公共抽象类AbstractProductPopulator…
)当然,我会编辑文章以包含抽象填充器的定义。请参阅ProductData的名称空间和AbstractProductPopulator中的名称空间。它们可能不同。如果您使用Hybris 6+的话,我建议您仅扩展ProductPopulator。您完全正确。在electronicsfacades-beans.xml文件中,集合an的类指向了错误的路径。我更改了它,错误在生成后消失了。非常感谢。