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>

メソッド deletaPorNome(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 に答える