私は次の問題があります。 私は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;
}
はい私は同じ方法で試しました...しかし、まだ動作しません。問題は、テーブルが新しい方法をリフレッシュしないということです。 – user3515460
「新しい方法」とはどういう意味ですか?あなたの 'hauptBean'が持っている範囲を教えてください。 – chaeschuechli
セッションスコープ – user3515460