0

每个人。

由于我现在使用的主机(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>

方法 deletePorNome(String nome) -- deletaPorNome = "removeByName":

public void deletaPorNome(String nome) {
    this.grupoRepositorio.excluiPorNome(nome);
    this.grupos = null;
}

GrupoRepositorio 是我的具有 CRUD 操作的无状态会话 Bean:

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 等。没有任何效果。有什么问题?

4

1 回答 1

0

完成后将 id 添加到表中,然后在我的 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;
    }
于 2013-11-24T19:38:42.950 回答