【问题标题】:Broadleaf Commerce and Multiple product typesBroadleaf Commerce 和多种产品类型
【发布时间】:2013-03-22 07:12:45
【问题描述】:

我的产品类型少于 5 种,我一直在关注以下手册:
http://docs.broadleafcommerce.org/current/Extending-Entities-Tutorial.html 直到“单表继承”,因为我只有更少的变化,我不想使用单表继承。 我已经完成了以下操作,但是在重建并重新启动后,我没有看到在数据库中创建任何表。有什么想法吗?

书籍

@Entity
@Table(name="SB_BOOKS")
public class BookImpl extends ProductImpl implements Books {
.....
}

Persistence.xml

<class>com.xproject.core.catalog.domain.BookImpl</class>

context-entity.xml

<bean id="com.xproject.core.catalog.domain.Book" class="com.xproject.core.catalog.domain.BookImpl" scope="prototype"/>

更新:请注意,如果我像这样覆盖(扩展)BLC ProductImpl bean,则会创建表

<bean id="org.broadleafcommerce.core.catalog.domain.ProductImpl" class="com.xproject.core.catalog.domain.BookImpl" scope="prototype"/>

【问题讨论】:

    标签: spring hibernate e-commerce broadleaf-commerce


    【解决方案1】:

    您在“development.properties”中设置的 blPU.hibernate.hbm2.ddl.auto 是什么?如果您希望 Hibernate 自动为您创建表,那么您应该将此设置为“create”或“create-drop”。另请注意,默认情况下,2 个应用程序(站点和管理员)对此具有不同的值。管理员设置为“更新”,而站点设置为“创建-删除”。如果你只启动管理员,因为 Hibernate DDL 设置为“更新”,我不相信你的新表会被创建。

    我还假设您已经在“核心”项目中创建了这个域,这也是推荐的。

    来源:作为一名 Broadleaf 工程师 :)

    【讨论】:

    • 嗨菲利普,感谢您的更新!该域位于“核心”项目下,我没有将“blPU.hibernate.hbm2.ddl.auto”从其默认状态更改为与上述相同。请注意,当我在 CustomSkuImpl.java 中使用一些添加的属性对 SkuImpl 进行子类化时,我取得了成功,这出乎意料地工作得很好,我可以看到新表创建得很好,我看到的唯一区别是这一次我没有通过在上下文实体中再次设置它来覆盖现有的 BLC 实体(例如 sku),而是创建了一个全新的 bean 原型。
    • 啊;我有点困惑,因为您将它从 Product(我认为是 ProductImpl;可能只是一个错字)扩展而来,而您正在从 Broadleaf 扩展某些东西。不过,在您的情况下,这是一个全新的实体。如果您正在创建一个全新的实体,则不需要第二部分(修改 appcontext-entity)。创建一个新实体应该很简单,看起来你所做的一切都是正确的。也许您没有重新安装“核心”项目而只是重新安装了“站点”?
    • 这里还有一条评论;每个实体都需要一个@Id 字段;如果没有主键,Hibernate 可能不会创建表。 ProductOptionImpl 实体具有您可以复制的最简单示例。
    • 嗨菲利普,再次感谢您的快速回复!抱歉,您的权利确实是一个错字,我已经更新了描述,我正在扩展 ProductImpl 并且它似乎只有在我覆盖上下文实体中的 BLC ProductImpl 时才创建数据库(参见上面的描述)。如果我在上下文实体中定义一个新 bean,即 BookImpl(扩展 ProductImpl)
    • 看起来hibernate没有创建表,
    【解决方案2】:

    通过在 BLC 代码中遵循 phillips 提示并添加继承注释和策略 (JOINED) 来修复它。

    @Entity
    @Table(name="SB_BOOKS")
    @Inheritance(strategy = InheritanceType.JOINED) /* FIX */
    public class BookImpl extends ProductImpl implements Books {
    .....
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多