Olá alguém poderia me ajudar, pq estou com um problema para inserir um item no atributo List
No projeto persisto as disciplinas do tipo optativas na tabela Sugestao, juntamente com uma List
package modelo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
@Entity
public class Evento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataInicial = new Date();
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataFinal = new Date();
@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "listaSugestoes")
private List<Sugestao> sugestoes;
//gets e sets omitidos
public void addSugestao(Sugestao item) {
sugestoes.add(item);
}
}
package modelo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
@Entity
public class Sugestao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "optativas", referencedColumnName = "id")
private Disciplina disciplina;
@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "alunos")
private List<Aluno> alunos = new ArrayList<Aluno>();
//gets e sets omitidos
}
package modelo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
@Entity
public class Aluno implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nome;
private String matricula;
private String login;
private String senha;
private String periodoInicial;
private Integer periodoCorrente;
@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "IdDisciplina")
private List<Disciplina> disciplinas = new ArrayList<Disciplina>();
//gets e sets omitidos
}
package modelo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@Entity
public class Disciplina implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String codigo;
private String nome;
private Integer cargaHoraria;
private String tipo;
private Integer nivel;
private String credito;
@OneToOne (optional = false)
@JoinColumn(name = "professor", referencedColumnName = "id")
private Professor professor;
//gets e sets omitidos
}
package beans;
import dao.DisciplinaJpaController;
import dao.ProfessorJpaController;
import dao.SugestaoJpaController;
import dao.exceptions.NonexistentEntityException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.RollbackException;
import modelo.Disciplina;
import modelo.Professor;
import modelo.Sugestao;
import util.FacesUtil;
@ManagedBean
@SessionScoped
public class DisciplinaMB {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("PU");
private Disciplina disciplina = new Disciplina();
ProfessorJpaController daoProf = new ProfessorJpaController(emf);
DisciplinaJpaController dao = new DisciplinaJpaController(emf);
SugestaoJpaController daoSugestao = new SugestaoJpaController(emf);
private List<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();
private List<Sugestao> listaOptativas = new ArrayList<Sugestao>();
private Professor prof = new Professor();
private Sugestao sugestao = new Sugestao();
//gets e sets
public void cadastrar() {
disciplina.setProfessor(prof);
selecaoOptativas(disciplina);
try {
dao.create(disciplina);
disciplina = new Disciplina();
FacesUtil.adicionarMensagem("formCadastroDisc", "Cadastrado");
} catch (EntityExistsException e) {
FacesUtil.adicionarMensagem("formCadastroDisc", "Erro: Já está cadastrado");
} catch (RollbackException e) {
FacesUtil.adicionarMensagem("formCadastroDisc", "Erro: Algo deu errado no cadastro");
}
disciplina = new Disciplina();
pesquisarTudo();
}
public void selecaoOptativas(Disciplina d) {
if ("Optativa".equals(d.getTipo())) {
cadastroSugestao(d);
}
}
public void cadastroSugestao(Disciplina d) {
sugestao = new Sugestao();
sugestao.setDisciplina(d);
sugestao.setAlunos(null);
daoSugestao.create(sugestao);
}
}
classe Bean onde tento inserir na List
package beans;
import dao.EventoJpaController;
import dao.SugestaoJpaController;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.RollbackException;
import modelo.Aluno;
import modelo.Evento;
import modelo.Sugestao;
import util.FacesUtil;
@ManagedBean
@RequestScoped
public class EventoMB {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("PU");
EventoJpaController daoEvento = new EventoJpaController(emf);
SugestaoJpaController daoSugestao = new SugestaoJpaController(emf);
private Evento evento = new Evento();
private Aluno aluno = new Aluno();
private Sugestao sugestao =new Sugestao();
private List<Evento> listaEvento = new ArrayList<Evento>();
public EventoMB() {
evento = new Evento();
pesquisarTudo();
pesquisarOptativas();
}
//gets e sets
public void cadastro() {
pesquisarOptativas();
try {
daoEvento.create(evento);
evento = new Evento();
FacesUtil.adicionarMensagem("formCadastroEven", "Cadastrado");
} catch (EntityExistsException e) {
FacesUtil.adicionarMensagem("formCadastroEven", "Erro: Já está cadastrado");
} catch (RollbackException e) {
FacesUtil.adicionarMensagem("formCadastroEven", "Erro: Algo deu errado no cadastro");
}
pesquisarTudo();
}
public void pesquisarTudo() {
listaEvento = daoEvento.findEventoEntities();
}
public void pesquisarOptativas() {
for(Sugestao s: daoSugestao.findSugestaoEntities()){
evento.addSugestao(s);
}
}
}