EclipseLink删除和更新 - 从Hibernate迁移

时间:2013-10-28 01:36:58

标签: java primefaces sql-update eclipselink sql-delete

大家。

由于我现在正在使用的主机(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等。没有任何工作。有什么问题?

1 个答案:

答案 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;
    }