我开发了一个使用阔叶商业的应用程序。我尝试按照文档
实施动态定价我成功实现并可以在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) {
....
}
}
答案 0 :(得分:1)
我不确定这是解决此问题的正确方法。但是我在我的自定义DynamicSkuPricingFilter中放置了以下片段,它解决了我的问题
@PostConstruct
public void init() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
或
我们可以解决这个问题 - 不使用@Autowired或@Resource在自定义DynamicSkuPricingFilter中注入DynamicSkuPricingService,而是从applicationcontext中获取DynamicSkuPricingService bean。