ProductOptionValueImpl的类转换错误 - Broadleaf商务

时间:2018-05-30 11:36:23

标签: broadleaf-commerce

我开发了一个使用阔叶商业的应用程序。我尝试按照文档

实施动态定价

https://www.broadleafcommerce.com/docs/core/current/broadleaf-concepts/pricing/dynamic-pricing-configuration

我成功实现并可以在eclipse中启动应用程序。但是当我尝试在命令行中启动应用程序时,我得到了以下错误

  

java.lang.IllegalStateException:类   [org.broadleafcommerce.core.catalog.domain.ProductOptionValueImpl]   是MergePersistenceUnitManager中的托管类   但未被EntityMarkerClassTransformer检测为被转换。可能有多种原因:   1.在servlet容器(如Tomcat)中启用会话持久性,并且在由应用程序的类加载器加载之前,容器已加载实体对象。确保会话持久性i   残疾;在Tomcat中确保context.xml中存在一个元素。   2.您无意中使用类扫描来查找ServletContainerInitializer类,并且您的servlet容器在注册变换器之前加载所有类。如果您使用的是web.xml,请使用ensu   重新认为该文件中有某个元素。如果您没有使用web.xml并且正在使用Spring Boot,那么您可能需要添加一个。见https://www.broadleafcommerce.com/docs/core/5。   2 / broadleaf-concepts / key-aspects-and-configuration / app-server-configuration / tomcat,用于示例web.xml   3.这些类被用作@Bean方法的一部分,或者在持久性管理器启动之前初始化的一些其他运行时容量中使用

我尝试了第1点和第2点中提到的解决方案,但无法解决。

请帮我摆脱这个例外。

编辑:我已经实现了DynamicSkuPricingService接口,里面有一个使用ProductOptionValueImpl的覆盖方法。它实际上造成了问题。

   @Service("ecomDynamicSkuPricingService")
    public class EcomDynamicSkuPricingServiceImpl implements DynamicSkuPricingService {
   ....
    @Override
    public DynamicSkuPrices getPriceAdjustment(ProductOptionValueImpl productOptionValueImpl, Money priceAdjustment,
            @SuppressWarnings("rawtypes") HashMap skuPricingConsiderationContext) {
   ....
   }
}

1 个答案:

答案 0 :(得分:1)

我不确定这是解决此问题的正确方法。但是我在我的自定义DynamicSkuPricingFilter中放置了以下片段,它解决了我的问题

@PostConstruct
public void init() {
    SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}

我们可以解决这个问题 - 不使用@Autowired或@Resource在自定义DynamicSkuPricingFilter中注入DynamicSkuPricingService,而是从applicationcontext中获取DynamicSkuPricingService bean。