2

我在使用 EntityItem 将成员字段绑定到字段组时遇到问题。

我从一个继承了超类的某些字段的子类创建了一个 EntityItem。

Class<?> dataClass = navigator.getNavigationList().get(navigator.getActualNavigation()).getDataClass();
Constructor<?> pConstructor = dataClass.getConstructor(); 
pv = (ProduktVereinbarung)pConstructor.newInstance();
eI = fPPC.createEntityItem(pv);

超类:

@Entity
@Table(name="PRODUKT_VEREINBARUNG")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="PV_TYPE", discriminatorType = DiscriminatorType.STRING)
public class ProduktVereinbarung implements Serializable {

    @Column(name="PV_ID")
    protected int id;

    @Column(name="PV_FK_PK_ID")
    protected int finanzProduktKlasse;

    @Column(name="PV_BEZEICHNUNG")
    protected String bezeichnung;
    ......

和子类:

@Entity
@Table(name="PV_EDELMETALL")
@DiscriminatorValue("PVEdelMetall")
public class PVEdelMetall extends ProduktVereinbarung implements Serializable {

    @Column(name="PVEM_KAUFKURS")
    protected Double kaufKurs;

    @Column(name="PVEM_MENGE")
    protected int menge;

    ....
}

当我尝试在我的窗口类中绑定成员字段时,只有超类的成员字段被绑定 - 而不是子类的字段:

public void setEntityItem(Item item) {
    this.fieldGroup.setItemDataSource(item);
    this.fieldGroup.bindMemberFields(this);
}

有人可以帮忙吗

4

1 回答 1

1

为了调试这个问题而不是 JPAController 尝试使用 BeanItem,您通过将实体实例传递给它的构造函数来实例化它。如果它有效,那么您确定它与 JPAContainer 相关。然后尝试使用 bind() 和 buildAndBind() 方法 ( https://vaadin.com/book/vaadin7/-/page/datamodel.itembinding.html ) 绑定特定列,查看此示例http://dev。 vaadin.com/browser/svn/addons/JPAContainer/trunk/jpacontainer-itest/src/main/java/com/vaadin/addon/jpacontainer/itest/fieldgroup/FieldGroupTest.java

于 2013-10-12T13:40:09.930 回答