ProductOptionValueImpl - Broadleaf commerce的类转换错误



我开发了一个使用阔叶商务的应用程序。我尝试按照文档实施动态定价

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

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

java.lang.IllegalStateException: The classes [org.broadleafcommerce.core.catalog.domain.ProductOptionValueImpl] 是 MergePersistenceUnitManager 中的受管类 但未被 EntityMarkerClassTransformer 检测到正在转换。这可能有多种原因: 1. 在您的 servlet 容器(如 Tomcat(中启用了会话持久性,并且实体对象在由应用程序的类加载器加载之前已由容器加载。确保会话持久性 i s 禁用;在 Tomcat 中确保元素存在于您的上下文中.xml。 2. 您无意中使用了类扫描来查找 ServletContainerInitializer 类,并且您的 servlet 容器在注册转换器之前加载了所有类。如果您使用的是网络.xml,则 ensu Re该文件中的某个位置有一个元素。如果您没有使用 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) {
....
}
}

我不确定这是解决此问题的正确方法。但是我在我的自定义动态Sku定价过滤器中放置了以下代码片段,它解决了我的问题

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

我们可以通过以下方式解决此问题 - 不使用@Autowired或@Resource在自定义 DynamicSkuPricingFilter 中注入 DynamicSkuPricingService,而是从我们需要的任何应用程序上下文中获取 DynamicSkuPricingService bean。

最新更新