Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Ajuda jpa @one to many

$
0
0

@Bruno.Silveira escreveu:

Bom Dia !

Sou iniciante em JPA e estou com a seguinte dificuldade.

Minha aplicação tem um classe Bens e uma Classe doação.
No momento da doação eu seleciono vários bens.E o bem só pode ter uma doação.
Na minha interface eu coloco vários bens em uma lista porém quando eu gravo a operação ele só seta o id da doação e modifica o bem para doado no último item.

Segue abaixo os fontes obrigado desde já.

DOAÇÃO MODELO:

package modelo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;


Entity
Table(name = "doacao")
XmlRootElement
NamedQueries({
    NamedQuery(name = "Doacao.findAll", query = "SELECT d FROM Doacao d"),
    NamedQuery(name = "Doacao.findByIdDoacao", query = "SELECT d FROM Doacao d WHERE d.idDoacao = :idDoacao"),
    NamedQuery(name = "Doacao.findByDataDoacao", query = "SELECT d FROM Doacao d WHERE d.dataDoacao = :dataDoacao"),
    NamedQuery(name = "Doacao.findByNomeSolicitante", query = "SELECT d FROM Doacao d WHERE d.nomeSolicitante = :nomeSolicitante"),
    NamedQuery(name = "Doacao.findByTelefoneSolicitante", query = "SELECT d FROM Doacao d WHERE d.telefoneSolicitante = :telefoneSolicitante"),
    NamedQuery(name = "Doacao.findByEmailSolicitante", query = "SELECT d FROM Doacao d WHERE d.emailSolicitante = :emailSolicitante")})
public class Doacao implements Serializable {
    Column(name = "data_retirada")
    Temporal(TemporalType.DATE)
    private Date dataRetirada;
    private static final long serialVersionUID = 1L;
    Id
    GeneratedValue(strategy = GenerationType.IDENTITY)
    Basic(optional = false)
    Column(name = "id_doacao")
    private Integer idDoacao;
    Column(name = "data_doacao")
    Temporal(TemporalType.DATE)
    private Date dataDoacao;
    Size(max = 50)
    Column(name = "nome_solicitante")
    private String nomeSolicitante;
    Size(max = 255)
    Column(name = "telefone_solicitante")
    private String telefoneSolicitante;
    Size(max = 255)
    Column(name = "email_solicitante")
    private String emailSolicitante;
    JoinColumn(name = "id_colaborador", referencedColumnName = "id_colaborador")
    ManyToOne
    private Colaborador idColaborador;
    JoinColumn(name = "id_parceiro", referencedColumnName = "id_parceiros")
    ManyToOne
    private Parceiros idParceiro;
     OneToMany(cascade={CascadeType.MERGE}, mappedBy = "doacaoIdDoacao")
     private List<Bens> bensDoacaoList;

DOAÇÃO BEAN:

ackage MB;

import DAO.BensDAO;
import DAO.DoacaoDAO;
import infra.JPAUtil;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import modelo.Bens;
import modelo.Doacao;


@ViewScoped
@ManagedBean(name="doacaoBean")
public class  DoacaoBean{
private Doacao doacao = new Doacao();
    private EntityManager entity = new JPAUtil().getEntityManager();
    private DoacaoDAO dao = new DoacaoDAO(entity);
    private BensDAO bensDao = new BensDAO(entity);
    private List<Doacao> doacaos;
    private Bens itBens = new Bens();
    private ArrayList<Bens> bensDoados = new ArrayList();
    
    public void grava() {

        System.out.println("entrou no gravar");
       
            if(!entity.getTransaction().isActive()){
                entity.getTransaction().begin();
                }
        if (doacao.getIdDoacao() == null) {
            
            
            itBens.setDisponibilidade("Doado");
            itBens.setDoacaoIdDoacao(doacao);
             bensDao.atualiza(itBens);
            dao.adiciona(doacao);
            
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "Registro gravado com Sucesso!."));
            this.doacao = new Doacao();
            this.doacaos = dao.lista();
           
            
        } else {
            System.out.println("atualiza Doacao");
            dao.atualiza(doacao);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Doação alterada: ",""));
            this.doacao = new Doacao();
            this.doacaos = dao.lista();
            
       }
         entity.getTransaction().commit();

        
        
    }

    public Bens getItBens() {
        return itBens;
    }

    public void setItBens(Bens itBens) {
        this.itBens = itBens;
    }

    public List<Bens> getBensDoados() {
        return bensDoados;
    }

    public void setBensDoados(ArrayList<Bens> bensDoados) {
        this.bensDoados = bensDoados;
    }
  
       
        public List<Doacao> getDoacaos() {
            doacaos = dao.lista();
            System.out.println("lista");
       return doacaos;
        }

            public Doacao getDoacao() {
            return doacao;
        }

        public void setDoacao(Doacao doacao) {
            this.doacao = doacao;
        }

        public DoacaoDAO getDao() {
            return dao;
        }

    public void setDao(DoacaoDAO dao) {
        this.dao = dao;
    }

        

        public EntityManager getEntity() {
            return entity;
        }

        public void setEntity(EntityManager entity) {
            this.entity = entity;
        }
        public void remove(Doacao doacao){
            try {
               System.out.println("entrou no remove");		
                    entity.getTransaction().begin();
                    dao.remove(doacao);
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "Doacao Excluída."));
                    this.doacaos = dao.lista();
                    entity.getTransaction().commit(); 
            } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro", "Erroa ao excluir, pois Existe bens relacionados com Doação "));
            }
                    
               
                    
                    }
        public void addBensDoacao(Bens bensDoa){
            
            boolean opcao = true;
            
            
            if(!entity.getTransaction().isActive()){
                entity.getTransaction().begin();
                }
            
            itBens = bensDoa;
            itBens.setDisponibilidade("Doado");
            //itBens.setDoacaoIdDoacao(doacao);
            if(doacao.getBensDoacaoList()==null){
                System.out.println("Grava 1");
                bensDoados.add(itBens);
                doacao.setBensDoacaoList(bensDoados);
                //doacao.getBensDoacaoList().add(itBens);
            }else{
                System.out.println("Grava 2");
                System.out.println("ja tem bens");
               for (int i = 0; i < doacao.getBensDoacaoList().size(); i++) {
                   System.out.println("percorrendo o for" + i);
                if (doacao.getBensDoacaoList().get(i).getIdBen() == itBens.getIdBen()) {
                    
                    System.out.println("Grava 3");
                    System.out.println(doacao.getBensDoacaoList().get(i).getIdBen() +" = "+ itBens.getIdBen());
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro ao Adicionar", "Bem já Adicionado anteriormente"));
                    opcao = false ;
                    
                  }
               }
                    
                if(opcao){
                    
                 bensDoados.add(itBens);
                doacao.setBensDoacaoList(bensDoados);
               // doacao.getBensDoacaoList().add(itBens);
                    
                    System.out.println("Grava 4");
                    
                }
                
                
                
                
            }
            //bensDao.atualiza(itBens);
            

        }

desde já obrigado.

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>