2016-07-12 8 views
0

私は次の問題があります。 私はPrimefacesによって作成されたテーブルを持っています。この表では、@ OneToMany関係の要素を示しています。ユーザーが名前をクリックすると、この顧客の関連性が表に表示されます。これは正常に動作します。しかし、ユーザーはテーブルから単一の要素を削除する必要があります。各エントリには削除ボタンがあります。今問題: ボタンをクリックすると、データベースのエントリが正しく削除されますが、フォームの更新によって常にエントリが表示されます。だから私は何を変えなければならないの?エンティティ関係を削除した後にDatatableが更新されない

<p:dataTable value="#{hauptBean.listeRisikotraeger.risikotraeger}" 
         var="tr" id="tab" styleClass="tabelle" 
         emptyMessage="Keine Risikoträger definiert" 
         rendered="#{not empty hauptBean.standardSelektion and(not empty hauptBean.listeRisikotraeger.risikotraeger and(!hauptBean.aenderung))}"> 
         <p:column headerText="Risikoträger"> 
          <h:outputText value="#{tr.name}" /> 
         </p:column> 
         <p:column width="70"> 
          <p:commandButton value="löschen" 
           actionListener="#{hauptBean.eintragLoeschen(tr)}" 
           update="@form" /> 
         </p:column> 
        </p:dataTable> 

最初のエンティティ

@Entity 
public class Risikobereich implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private int id; 
private String risikobereich; 

@OneToMany(fetch=FetchType.EAGER) 
@JoinColumn(name="ri_id", referencedColumnName="id")  
private List<Risikotraeger> risikotraeger; 

[GETTER/SETTER] 

とエンティティの関係:

@Entity 
public class Risikotraeger implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private int id_risiko; 

private String name; 
private String abstraktesRisiko; 

[GETTER/SETTER] 

EDIT

これは、バックグラウンドですべてのものをして、私のセッションBeanであり、 :

@Override 
public boolean loeschen(Risikotraeger traeger) { 

    boolean erfolgreich = false; 

    em.remove(em.merge(traeger)); 

    erfolgreich = true; 

    return erfolgreich; 
} 

答えて

0

listeRisikotraegerを再読み込みしても、そのレコードが削除されましたか?

短い提案:なぜデータテーブルの代わりに削除ボタンを直接押してから@formを更新しますか?更新するデータテーブルの横に他のコンポーネントがある場合は、各コンポーネントにIDを定義して参照することをお勧めします。したがって、更新するページ要素の範囲を減らすことができます。例:<p:datatable id=tableRisikotraeger .../> ... <p:commandButton value="löschen" update="tableRisikotraeger" .../>

+0

はい私は同じ方法で試しました...しかし、まだ動作しません。問題は、テーブルが新しい方法をリフレッシュしないということです。 – user3515460

+0

「新しい方法」とはどういう意味ですか?あなたの 'hauptBean'が持っている範囲を教えてください。 – chaeschuechli

+0

セッションスコープ – user3515460

関連する問題