Ola sou iniciante em Java estou fazendo um cadastro simples utilizando o netbeans 7 tomcat…com hibernate,JPA e JSF, eu criei um Usuario e consigo fazer o cadastro programei utilizando o Persistencia para criar a classe usuario e o JPA COntroller onde ficam os DAOS…agora qria saber como criar um datatable para listar estes cadastros meu prof disse sobre um List e foreach alguem pod me ajudar? desde ja agradeço
Listar cadastro num data table
9 Respostas
Parceiro para ser sincero nao entendi oq tem q ser feito la…eh minha primeira dataTable que eu vou fazer estava tentando fazer o cadastro no banco MySql ai consegui e agora qero listar os items desse cadastro…
Se você está usando JSF é bem fácil, na sua classe managedBean crie um método que retone por exemplo um List como seu prof disse
public List getList() throws Exception {
HibernateUtil.clearSession();
List pro = HibernateUtil.getCurrentSession().createQuery("SUA HQL QUERY").list();
return pro;
}
depois é só passar isso na dataTable
<h:dataTable value="#{SEUMANAGEDBEAN.list}"
var="VARIAVEL PARA EXIBICAO">
o JSF se encarrega de popular a dataTable, essa é sua dúvida?
parceiro ele ta dando erro nesse getCurrentSession() e no .clearSession(); oq eh sao eles e como posso resolver na o netbeans ta pedindo p criar um metodo clearSession e um metodo getCurrentSession() no HibernateUtil
HibernateUtil.clearSession(); List pro = HibernateUtil.getCurrentSession().createQuery("select id,nome from Usuario").list();
return pro;
Meu HibernateUtil está assim
public class HibernateUtil {
public static final SessionFactory sessionFactory;
public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
static {
try {
AnnotationConfiguration cfg = new AnnotationConfiguration().configure();
sessionFactory = cfg.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getCurrentSession() throws HibernateException {
if (session.get() == null) session.set(sessionFactory.openSession());
return session.get();
}
public static void closeSession() throws HibernateException {
Session s = session.get();
if (s != null) s.close();
session.set(null);
clearSession();
}
public static void clearSession() throws HibernateException {
if (session.get() != null) session.get().clear();
}
}
o meu ta assim parceiro
package entity;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
/**
*
* @author Claudio teste
*/
public class HibernateUtil {
private static final long serialVersionUID = 1L;
private static HibernateUtil me;
private SessionFactory sessionFactory;
private HibernateUtil(){
sessionFactory = new AnnotationConfiguration()
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
.setProperty("hibernate.connection.url", "jdbc:mysql://200.230.71.14:3306/cepa")
.setProperty("hibernate.connection.username", "cepa")
.setProperty("hibernate.connection.password", "1cinco")
.setProperty("hibernate.hbm2ddl.auto", "none")
.setProperty("hibernate.show_sql", "true")
.setProperty("hibernate.format_sql", "true")
.setProperty("hibernate.c3p0.acquire_increment", "1")
.setProperty("hibernate.c3p0.idle_test_period", "100")
.setProperty("hibernate.c3p0.max_size", "10")
.setProperty("hibernate.c3p0.max_statements", "0")
.setProperty("hibernate.c3p0.min_size", "5")
.setProperty("hibernate.c3p0.timeout", "100")
.addAnnotatedClass(Usuario.class)
.buildSessionFactory();
}
public Session getSession(){
Session toReturn = sessionFactory.openSession();
toReturn.beginTransaction();
return toReturn;
}
public static HibernateUtil getInstance() {
if (me == null) {
me = new HibernateUtil();
}
return me;
}
}
Você está usando JPA não é? Então tenta algo parecido com isso
public List getList(){
Query query = em.createQuery("HQL QUERY");
return query.list();
}
Não sei como está seu DAO mas a API tem um método que retorna todos os objetos que seriam os registro da base de dados, é só uma questão de saber qual é.
Sim estou usando no DAO o JPAController
ackage entity.dao;
import entity.Usuario;
import entity.dao.exceptions.NonexistentEntityException;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.Persistence;
import javax.transaction.UserTransaction;
/**
*
* @author Claudio
*/
public class UsuarioJpaController implements Serializable {
public UsuarioJpaController(){//(UserTransaction utx, EntityManagerFactory emf) {
//this.utx = utx;
// this.emf = emf;
emf = Persistence.createEntityManagerFactory("CompletaAppPU");
}
private UserTransaction utx = null;
private EntityManagerFactory emf = null;
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void create(Usuario usuario) {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
em.persist(usuario);
em.getTransaction().commit();
} finally {
if (em != null) {
em.close();
}
}
}
public void edit(Usuario usuario) throws NonexistentEntityException, Exception {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
usuario = em.merge(usuario);
em.getTransaction().commit();
} catch (Exception ex) {
String msg = ex.getLocalizedMessage();
if (msg == null || msg.length() == 0) {
Long id = usuario.getId();
if (findUsuario(id) == null) {
throw new NonexistentEntityException("The usuario with id " + id + " no longer exists.");
}
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}
public void destroy(Long id) throws NonexistentEntityException {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
Usuario usuario;
try {
usuario = em.getReference(Usuario.class, id);
usuario.getId();
} catch (EntityNotFoundException enfe) {
throw new NonexistentEntityException("The usuario with id " + id + " no longer exists.", enfe);
}
em.remove(usuario);
em.getTransaction().commit();
} finally {
if (em != null) {
em.close();
}
}
}
public List<Usuario> findUsuarioEntities() {
return findUsuarioEntities(true, -1, -1);
}
public List<Usuario> findUsuarioEntities(int maxResults, int firstResult) {
return findUsuarioEntities(false, maxResults, firstResult);
}
private List<Usuario> findUsuarioEntities(boolean all, int maxResults, int firstResult) {
EntityManager em = getEntityManager();
try {
Query q = em.createQuery("select object(o) from Usuario as o");
if (!all) {
q.setMaxResults(maxResults);
q.setFirstResult(firstResult);
}
return q.getResultList();
} finally {
em.close();
}
}
public Usuario findUsuario(Long id) {
EntityManager em = getEntityManager();
try {
return em.find(Usuario.class, id);
} finally {
em.close();
}
}
public int getUsuarioCount() {
EntityManager em = getEntityManager();
try {
Query q = em.createQuery("select count(o) from Usuario as o");
return ((Long) q.getSingleResult()).intValue();
} finally {
em.close();
}
}
}
Ola sou iniciante em Java estou fazendo um cadastro simples utilizando o netbeans 7 tomcat…com hibernate,JPA e JSF, eu criei um Usuario e consigo fazer o cadastro programei utilizando o Persistencia para criar a classe usuario e o JPA COntroller onde ficam os DAOS…agora qria saber como criar um datatable para listar estes cadastros meu prof disse sobre um List e foreach alguem pod me ajudar? desde ja agradeço.