我有以下问题: 我有一张由Primefaces创建的表格。在此表中,我显示了@OneToMany关系的元素。用户单击一个名称,该表显示该客户的关联。这很好用。但是 - 用户应该从表中删除单个元素。所以每个条目都有一个删除按钮。现在的问题是: 如果我单击一个按钮,数据库中的条目将被正确删除,但我的表单更新始终显示该条目。那么我必须改变什么?
<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]
修改
这是我的会话Bean,它在后台完成所有工作:
@Override
public boolean loeschen(Risikotraeger traeger) {
boolean erfolgreich = false;
em.remove(em.merge(traeger));
erfolgreich = true;
return erfolgreich;
}
答案 0 :(得分:0)
您是否重新加载listeRisikotraeger
分别删除了该记录?
一个简短的建议:为什么在直接按删除按钮而不是数据表后更新@form
?如果要更新的数据表旁边还有其他组件,我建议,在每个组件上定义一个ID并引用它们。因此,您可以减少应更新的页面元素的范围。例如:<p:datatable id=tableRisikotraeger .../>
... <p:commandButton value="löschen" update="tableRisikotraeger" .../>