lista de entidades no se actualiza al persistir nuevos objetos

buenas tardes, en un proyecto en jpa,ejb,jsf 2.1. tengo una vista donde creo los objetos, y me los persite bien en la base de datos, pero cuando regreso al listado de los objetos en un datatable, no aparece el creado sino hasta que compilo de nuevo la aplicacion.

el @ManagedBean tiene @SessionScoped.

persisto con un AbstractFacade. estos son los metodos de crear y consultar:

 public void create(T entity) {
        try{
        getEntityManager().persist(entity);
        } catch (PersistenceException e) {  
 
            // I want to be able to distinguish between hard and soft errors  
            // here, but don't know how to!!  
 
            Throwable t = null;  
            for(t = e.getCause(); t != null; t = t.getCause());  
             
            System.out.print("Exception de presistencia:" + t.getClass().getName() + " mensaje "+t.getMessage());  
        }  
    }

    public List<T> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
    }

que debo hacer. muchas gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

No sé mucho de faces, pero

No sé mucho de faces, pero además de persistirlo en la base de datos; tendrías que agregar el objeto creado a tu dataTable (o modelo que administre los objetos del dataTable) para que aparezca en pantalla.

Imagen de ivansalazar

si tengo la datatable

si tengo la datatable mostrando los registros, pero para poder mostrar el nuevo dato creado, me toca deploy la aplicacion nuevamente para que aparezca,

Imagen de CharlieCorner

¿Por qué usas @SessionScope

¿Por qué usas @SessionScope para tu ManagedBean, forma parte de tu lógica o podrías reemplazarlo por un @ViewScope?

También, ¿Estás volviendo a llenar tu lista para DataTable volviendo a hacer una consulta a base de datos una vez que hay una inserción exitosa? Puede ser que está persistiendo a base de datos pero no estás actualizando la lista con el nuevo objeto como comenta @neko069.

Por lo que comentas, puede ser que sí tienes tu lista, pero como no la actualizas, es hasta que depolyeas la aplicación y se crea el bean y, supongo en tu constructor o método de inicialización, mandas llenar la lista para DataTable.

Imagen de ivansalazar

no se si es la mejor solucion:...

lo que hice para solucionar el problema fue no dejar cacheable la entidad, ya que lo intente con viewScope , tambien trate refrescando el entityManager pero igual no fuciono,
Muchas gracias.

Imagen de ingscjoshua

mmm

pero entocnes el problema no esta en JSF esta en como manejas la presistencia y lo unico que me suena es que no refrescas el objeto que pinta latabla como ya mencionan necessitas refrescar los datos de la tabla