【问题标题】:Broadleaf: extending product entity failedBroadleaf:扩展产品实体失败
【发布时间】:2017-11-21 14:47:35
【问题描述】:

您好,我已经扩展了 Broadleaf 产品实体并向该实体添加了一个新属性,并添加了管理演示注释以显示在管理端

这是我扩展实体的代码:

@AdminPresentationMergeOverrides({@AdminPresentationMergeOverride(name = "ExtendProductImpl.productWarranty", mergeEntries = {@AdminPresentationMergeEntry(propertyType = PropertyType.AdminPresentation.EXCLUDED, booleanOverrideValue=false)})})
public class ExtendProductImpl extends ProductImpl implements ExtendProduct {

@Column(name ="PRODUCT_WARRANTY")
@AdminPresentation(friendlyName = "product warrenty",
tab = TabName.General)

private String productWarranty;

 public String getProductWarranty() {

return productWarranty;

}



public void setProductWarranty(String productWarranty) {

this.productWarranty = productWarranty;

}}

这是我在 Core (ApplicationContextEntity.xml) 中的 XML 文件:

http://i.prntscr.com/u2UjARtwRVmI-PswDzxErw.png

这是另一个 XML 文件(Persistant-core):

http://i.prntscr.com/9Z8y_SplQNKp7HjCw4XyiA.png

这是应用更改后的输出屏幕截图:

http://i.prntscr.com/Gv-ssCaSTa2QbbS5rLB2vg.png

http://i.prntscr.com/eGWugVJRQ-aQqS_heWHsxw.png

请帮我解决问题。

提前致谢

【问题讨论】:

    标签: broadleaf-commerce


    【解决方案1】:

    您需要再做 1 件事并将演示产品更新为您的扩展类型。问题是,如果您仍然依赖演示数据,Hibernate 仍然会将它们视为ProductImpl 而不是ExtendProductImpl

    在您的代码 sn-p 中,您也没有 @javax.persistence.Entity@javax.persistence.Table 注释。此外,通常不需要为您的自定义域对象创建接口,它是可选的。所以假设它实际上是这样的:

    @Entity
    @Table(name = "ext_product")
    @AdminPresentationMergeOverrides({@AdminPresentationMergeOverride(name = "ExtendProductImpl.productWarranty", mergeEntries = {@AdminPresentationMergeEntry(propertyType = PropertyType.AdminPresentation.EXCLUDED, booleanOverrideValue=false)})})
    

    公共类 ExtendProductImpl 扩展 ProductImpl 实现 ExtendProduct {

    然后您应该通过将数据插入子类来将演示数据更新为 ExtendProductImpl 类型:

    INSERT INTO ext_product (PRODUCT_ID) (SELECT PRODUCT_ID FROM BLC_PRODUCT)
    

    最后,您可能还想确保无论何时在管理员中创建产品,其类型都应始终为 ExtendProductImpl。为此,请使用@AdminPresentationClass:

    @Entity
    @Table(name = "ext_product")
    @AdminPresentationClass(ceilingDisplayEntity = "com.mycompany.ExtendProductImpl")
    @AdminPresentationMergeOverrides({@AdminPresentationMergeOverride(name = "ExtendProductImpl.productWarranty", mergeEntries = {@AdminPresentationMergeEntry(propertyType = PropertyType.AdminPresentation.EXCLUDED, booleanOverrideValue=false)})})
    public class ExtendProductImpl extends ProductImpl implements ExtendProduct {
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多