2013-10-12 47 views
2

我有使用EntityItem綁定成員字段到字段組的問題。vaadin bindmemberfields綁定不是所有memberfields

我從一個子類創建一個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; 

    .... 
} 

當我嘗試在我的窗口類的memberfields僅綁定超類的memberfields是綁定 - 不子類別的字段:

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

有人可以幫忙

+0

子類PVEdelmetallWindowImpl不從ProduktVereinbarung繼承或者是ProduktVereinbarungWindowImpl的一個子類? – melc

+0

如果在方法setEntityItem中傳遞的項目是一個BeanItem,那麼確保使用您的子類的一個實例來實例化它。 – melc

+0

對不起,我發佈了編輯器窗口的子類而不是子類。現在應該是正確的。 – stoi

回答

1

爲了調試這個問題,而不是JPAController嘗試使用BeanItem,你可以通過將你的實體實例傳遞給它的構造函數來實例化它。 如果有效,那麼您確定它與JPAContainer有關。然後嘗試使用綁定()和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

+0

謝謝。它使用BeanItem。但是我現在應該怎麼處理我的JPAContainer?從我的角度來看,它不適用於我想要的方式。我應該改爲BeanItemContainer嗎? – stoi

+0

如果您沒有遺漏特定部分的任何重要功能,請確保您可以使用BeanItemContainer或Bean容器的bean /實體中的BeanItem來構建您的表單/ fiedlgroup。另外,你有沒有嘗試其他方法?用你的子類的特定列構建和構建綁定? – melc

+0

是的,我做了 - 結果相同。子類的成員字段不被識別。這太糟糕了,因爲如果按預期工作,JPAContainer會很舒服。 – stoi