大家。
由于我现在正在使用的主机(GlassFish 4,JEE 7和JPA 2.1),我最近不得不从Hibernate更改为EclipseLink,但是在删除和更新PrimeFaces数据表中的记录时遇到了一些问题。
数据表中带有删除链接的列:
<p:column>
<f:facet name="header">Deleta</f:facet>
<h:form>
<h:commandLink action="#{grupoMB.deletaPorNome(grupo.nome)}">excluir</h:commandLink>
</h:form>
</p:column>
方法deletaPorNome(String nome) - deletaPorNome =“removeByName”:
public void deletaPorNome(String nome) {
this.grupoRepositorio.excluiPorNome(nome);
this.grupos = null;
}
GrupoRepositorio是我的无状态会话Bean,具有CRUD操作:
public void excluiPorNome(String nome) {
this.manager.getTransaction().begin();
Query q = this.manager
.createQuery("SELECT x FROM Grupo x WHERE x.nome = :nome");
q.setParameter("nome", nome);
Grupo grupo = (Grupo) q.getSingleResult();
this.manager.remove(grupo);
this.manager.getTransaction().commit();
this.manager.close();
}
无论我在此方法中使用什么:TypedQuery,本机查询,DatabaseSession deleteObject等。没有任何工作。有什么问题?
答案 0 :(得分:0)
将它添加到表中,然后在我的SLSB中创建方法removeById(Long id):
public void removeById(Long id) {
Grupo grupo = this.manager.find(Grupo.class, id);
this.manager.remove(grupo);
}
然后在我的托管bean中调用它:
public void delete(Long id) {
this.grupoRepositorio.removeById(id);
this.grupos = null;
}