2011-06-19 25 views
0

は、私は2つのエンティティエンティティの表示内容(表)

@Entity  
    public class Tabulka{ 

@OneToMany(mappedBy = "tabulka") 
    private List<VysledkyHraca> vysledkyHraca; 
. 
. 
. 

} 

@Entity 
    public class VysledkyHraca{ 

    @ManyToOne 
     private Tabulka tabulka; 
. 
. 
. 

    } 

を持っている今、私はVysledkyHracaの新しいインスタンスを作成し、データベースに保存します。

em.merge(vysledkyHraca); 

emはEntityManagerです。

が、私はTabulkaアイテム

<h:dataTable value="#{item.vysledkyHraca}" var="item1" > 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="hrac"/> 
         </f:facet> 
         <h:outputText value="#{item1.hrac}"/> 
        </h:column> 
       </h:dataTable> 

私はこのテーブルに新しい項目に表示didntのを書きたいとき。私はこの新しいアイテムを見るためにこのアプリケーションを構築して実行しなければなりません。私はこの新しいアイテムをすぐに見たいのですが?

私はem.flushまたはem.refreshを呼び出そうが、あなたはem.persist(newIstance)を使用する必要があり、既存のデータを更新していないので、それは助け

+0

JSFのページまたはバッキングBeanのページに問題がありますか?ブレークポイントを入れて、バックエンドでデータがフロントエンドと異なるかどうかを確認する – Dejell

+0

System.out.println()を使用してnamedqueryの結果を書き出します。ここではレコードが最新でないという問題があります。 – hudi

答えて

0

手動Tabulka内のエンティティが別のMethodeの追加更新する必要はありません。VysledkyHracaで

public void addVysledkyHraca(VysledkyHraca v){ 
    this.vysledkyHraca.add(v); 
    if(v.getTabulka()!=this) 
     v.setTabulka(this); 

} 

:あなたはtabulkaを更新しているとき

public void setTabulka(Tabulka t) { 
    this.tabulka = t; 
    if (!t.getVysledkyHraca().contains(this)) { 
     t.getVysledkyHraca().add(this); 
    } 
} 

を単に追加するaddVysledkyHracaを呼び出します新しいVysledkyHracaがリストに追加されました。

0

ため

THXを助けていませんでし; 即時の変更を確認したい場合は、IcefacesまたはRichfacesを推奨するために、アプリケーションにいくつかのAjax機能を追加する必要があります。

+0

はいem.persistを使用して、新しいレコードが作成されたことをデータベースで確認します。私は問題が名前付きのクエリにあると思う。最初にこの名前付き照会を呼び出すと、正しい結果が表示されますが、2番目に呼び出されると、3番目に...名前付き照会で結合を使用すると、最新のレコードが表示されませんでした。私の暫定的な解決策は、このエンティティを手動で更新することです(idがvysledky hracaをtabulkaに追加する場合)、それは動作しますが、これは正しい解決策ではないと思います。 – hudi

+0

またはエンティティマネージャに問題があります。私はこれを使用しています:@PersistenceContext EntityManager em; – hudi

関連する問題