Alo, tudo bem? Preciso de ajuda por favor, estou tentando selecionar linhas multiplas em uma tabela e depois de selecionar quero clicar no botao para remover as linhas selecionadas. Quero que essas linhas sejam removidas na base de dados tambem.
Base de dados usada Mysql (nome: mozeventosdb)
Primefaces 6.0
JSF 2.0
Java 8
Ai vai o que fi ate agora:
removereventos.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition template="_template.xhtml">
<ui:define name=“titulo”>
Remover Evento
</ui:define>
<ui:define name="conteudo">
<h:form>
<p:messages id="messages" autoUpdate="true"/>
<p:fieldset legend="Dados do Evento" >
<h:panelGrid columns="4">
<h:outputLabel value="Nome do evento:" for="nome" />
<p:inputText id="nome" value="#{eventoBean.evento.nomeEvento}"
validatorMessage="O nome nao pode ser superior a 40 caracteres" >
<f:validateLength maximum="40"/>
<f:ajax event="blur"/>
</p:inputText>
<h:inputHidden width="1"/>
<h:inputHidden width="1"/>
<h:outputLabel value="Data do evento: " for="dataEventoInicio" />
<p:calendar id="dataEventoInicio" value="#{eventoBean.evento.dataEventoInicio.time}"
pattern="dd/MM/yyyy" timeZone="Africa/Harare" />
<h:outputLabel value="ate" for="dataEventoFim" />
<p:calendar id="dataEventoFim" value="#{eventoBean.evento.dataEventoFim.time}"
pattern="dd/MM/yyyy" timeZone="Africa/Harare" />
</h:panelGrid>
<br />
<p:dataTable id="tabelaEventoss" var="evento" value="#{eventoBean.listaEventos}" selectionMode="multiple"
selection="#{eventoBean.eventosSelecionados}" rowKey="#{evento.id}" paginator="true" rows='10'>
<f:facet name="header">
Tabela de Eventos
</f:facet>
<p:column headerText="Nome">
<h:outputText value="#{evento.nomeEvento}" />
</p:column>
<p:column headerText="Descricao">
<h:outputText value="#{evento.descricaoEvento}" />
</p:column>
<p:column headerText="Data Inicio">
<h:outputText value="#{evento.dataEventoInicio.time}">
<f:convertDateTime pattern="dd/MM/yyy" timeZone="Africa/Harare"/>
</h:outputText>
</p:column>
<p:column headerText="Data Fim">
<h:outputText value="#{evento.dataEventoFim.time}">
<f:convertDateTime pattern="dd/MM/yyy" timeZone="Africa/Harare"/>
</h:outputText>
</p:column>
<f:facet name="footer">
<p:commandButton process="tabelaEventoss" value="Pesquisar" type="reset" icon="ui-icon-search"/>
<p:commandButton process="tabelaEventoss" value="Remover" action="#{eventoBean.remover(evento)}"
type="reset" icon="ui-icon-trash"/>
</f:facet>
</p:dataTable>
</p:fieldset>
</h:form>
</ui:define>
</ui:composition>
Evento.class
package mz.co.evento.modelo;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
public class Evento {
@Id
@GeneratedValue
private Integer id;
private String nomeEvento;
private String descricaoEvento;
private Integer limiteDePessoas;
private boolean estadoDoEvento;
@Temporal(TemporalType.DATE)
private Calendar dataEventoInicio = Calendar.getInstance();
@Temporal(TemporalType.DATE)
private Calendar dataEventoFim = Calendar.getInstance();
@ManyToOne
private Categoria categoria;
@ManyToOne
private Estabelecimento estabelecimento;
// Getters e Setters
public String getNomeEvento() {
return nomeEvento;
}
public Estabelecimento getEstabelecimento() {
return estabelecimento;
}
public void setEstabelecimento(Estabelecimento estabelecimento) {
this.estabelecimento = estabelecimento;
}
public void setNomeEvento(String nomeEvento) {
this.nomeEvento = nomeEvento;
}
public String getDescricaoEvento() {
return descricaoEvento;
}
public void setDescricaoEvento(String descricaoEvento) {
this.descricaoEvento = descricaoEvento;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public Integer getLimiteDePessoas() {
return limiteDePessoas;
}
public void setLimiteDePessoas(Integer limiteDePessoas) {
this.limiteDePessoas = limiteDePessoas;
}
public Calendar getDataEventoInicio() {
return dataEventoInicio;
}
public void setDataEventoInicio(Calendar dataEventoInicio) {
this.dataEventoInicio = dataEventoInicio;
}
public Integer getId() {
return id;
}
public Calendar getDataEventoFim() {
return dataEventoFim;
}
public void setDataEventoFim(Calendar dataEventoFim) {
this.dataEventoFim = dataEventoFim;
}
public boolean isEstadoDoEvento() {
return estadoDoEvento;
}
public void setEstadoDoEvento(boolean estadoDoEvento) {
this.estadoDoEvento = estadoDoEvento;
}
}
EventoBean.class
package mz.co.evento.bean;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import mz.co.evento.dao.DAO;
import mz.co.evento.modelo.Categoria;
import mz.co.evento.modelo.Estabelecimento;
import mz.co.evento.modelo.Evento;
@ManagedBean
@ViewScoped
public class EventoBean {
private Evento evento = new Evento();
private List<Evento> eventosSelecionados;
private Integer estabelecimentoId;
private Integer categoriaId;
public void gravarCategoriao(){
Categoria categoria = new DAO<Categoria>(Categoria.class).buscaPorId(this.categoriaId);
System.out.println("Nome da categoria: " + categoria.getNome());
this.evento.setCategoria(categoria);
}
public void gravarEstabelecimento(){
Estabelecimento estabelecimento = new DAO<Estabelecimento>(Estabelecimento.class).buscaPorId(this.estabelecimentoId);
System.out.println(estabelecimento.getNomeEstabelecimento() + " Vamos ver se o estabelecimento esta correcta");
this.evento.setEstabelecimento(estabelecimento);
}
public List<Estabelecimento> getListaEstabelecimentos(){
return new DAO<Estabelecimento>(Estabelecimento.class).listaTodos();
}
public List<Evento> getEventosSelecionados() {
return eventosSelecionados;
}
public void setEventosSelecionados(List<Evento> eventosSelecionados) {
this.eventosSelecionados = eventosSelecionados;
}
public List<Categoria> getListaCategorias(){
return new DAO<Categoria>(Categoria.class).listaTodos();
}
public List<Evento> getListaEventos(){
return new DAO<Evento>(Evento.class).listaTodos();
}
public Evento getEvento() {
return evento;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public Integer getEventoId() {
return estabelecimentoId;
}
public void setEventoId(Integer eventoId) {
this.estabelecimentoId = eventoId;
}
public Integer getEstabelecimentoId() {
return estabelecimentoId;
}
public void setEstabelecimentoId(Integer estabelecimentoId) {
this.estabelecimentoId = estabelecimentoId;
}
public Integer getCategoriaId() {
return categoriaId;
}
public void setCategoriaId(Integer categoriaId) {
this.categoriaId = categoriaId;
}
public void gravar() {
System.out.println("Gravando evento " + this.evento.getNomeEvento());
gravarCategoriao();
gravarEstabelecimento();
new DAO<Evento>(Evento.class).adiciona(this.evento);
}
public void remover(Evento evento){
new DAO<Evento>(Evento.class).remove(evento);
}
}
DAO.class
package mz.co.evento.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaQuery;
public class DAO {
private final Class<T> classe;
public DAO(Class<T> classe) {
this.classe = classe;
}
public void adiciona(T t) {
// consegue a entity manager
EntityManager em = new JPAUtil().getEntityManager();
// abre transacao
em.getTransaction().begin();
// persiste o objeto
em.persist(t);
// commita a transacao
em.getTransaction().commit();
// fecha a entity manager
em.close();
}
public void remove(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.remove(em.merge(t));
em.getTransaction().commit();
em.close();
}
public void atualiza(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.merge(t);
em.getTransaction().commit();
em.close();
}
public List<T> listaTodos() {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).getResultList();
em.close();
return lista;
}
public T buscaPorId(Integer id) {
EntityManager em = new JPAUtil().getEntityManager();
T instancia = em.find(classe, id);
em.close();
return instancia;
}
public int contaTodos() {
EntityManager em = new JPAUtil().getEntityManager();
long result = (Long) em.createQuery("select count(n) from livro n")
.getSingleResult();
em.close();
return (int) result;
}
public List<T> listaTodosPaginada(int firstResult, int maxResults) {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).setFirstResult(firstResult)
.setMaxResults(maxResults).getResultList();
em.close();
return lista;
}
}
Obrigado desde ja. Ate agora tudo arranca normalmente so nao consigo remover
