gpt4 book ai didi

java - Broadleaf - 创建动态产品异常(exception)

转载 作者:行者123 更新时间:2023-12-02 06:56:14 25 4
gpt4 key购买 nike

我是 Broadleaf 的新手,一直在 Broadleaf 演示项目上花费时间来熟悉该框架。我正在使用当前稳定的 Broadleaf 版本 - v2.2。

我的目标是在不使用管理控制台的情况下创建动态类别/产品。但是,我收到 TransientObjectException:

java.lang.IllegalStateException: org.hibernate.TransientObjectException: object is an unsaved transient instance - save the transient instance before merging: org.broadleafcommerce.core.catalog.domain.CategoryImpl
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1386)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1317)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1323)

这就是我尝试创建类别/产品的方式:

private void addProductMetaData(Product product) {
product.setName("phone A");
product.setFeaturedProduct(true);
product.setUrl("/phones/phoneA");
product.setCanSellWithoutOptions(true);
product.setManufacturer("manufacturer A");
product.setActiveStartDate(new Date());
product.setActiveEndDate(null);
addMediaInformation(product);

Category category = retrieveCategory();
product.setDefaultCategory(category);
// product.getAllParentCategories().add(category);
catalogService.saveProduct(product); //**Exception occurs here**

}

private Category retrieveCategory() {
List<Category> categories = catalogService.findCategoriesByName("phones");
Category category = (CollectionUtils.isEmpty(categories) ? catalogService.createCategory() : categories.get(0));
if (StringUtils.isEmpty(category.getName())) {
category.setName("phones");
category.setUrl("/phones");
Category parentCategory = catalogService.findCategoriesByName("Primary Nav").get(0);
category.setDefaultParentCategory(parentCategory);
category.setActiveStartDate(new Date());
category.getAllParentCategories().add(parentCategory);
catalogService.saveCategory(category);
}
return category;
}

有人可以解释为什么我会收到此异常(因为类别已保留)以及如何解决它?

最佳答案

在我看来,类别列表为空,导致调用服务来获取新类别。现在,虽然您已将这个新类别与产品相关联,但这个新类别并未保存在数据库中。

您需要首先保留这个新类别,然后在产品上调用保存。这应该可以解决问题。

如果这个类别被持久化,那么 hibernate 就无法将此类别与您认为持久化的类别相匹配。

关于java - Broadleaf - 创建动态产品异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com