Broadleaf:扩展产品实体失败

Broadleaf: extending product entity failed

您好,我已经扩展了 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

请帮我解决问题。

提前致谢

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

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

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

public class ExtendProductImpl 扩展 ProductImpl 实现 ExtendProduct {

然后,您应该通过将数据插入子class:

来将演示数据全部更新为 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 {