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