vaadin bindmemberfields并不绑定所有成员字段

时间:2013-10-12 08:32:29

标签: vaadin

我遇到使用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);
}

请有人帮忙吗

1 个答案:

答案 0 :(得分: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