Bom vamos ver se eu consigo explicar eu tenho duas entidades curso e disciplina com relacionamento many to many, consigo cadastrar e remover, mas não consigo fazer select para trazer os resultados das duas tabelas só trago da tabela curso seperadas, não com junção. vamos aos códigos.
Quando do select e "debugo" o código ele traz só resultado do Curso.
Desde já muito obrigado, olha não é trabalho de faculdade aki no trabalho vai ter uma troca de JDBC para JPA e tenho q aprender rápido
vlw
entidadespackage br.com.universidade.entidades;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
@NamedQueries({ @NamedQuery(name = "getCurso.Discplina",
query = "select c from Curso c inner join c.disciplinas where c.nome like ?1") }
)
@Entity
public class Curso {
@Id
@GeneratedValue
private Long idCurso;
private String nome;
private String descricao;
private int duracao;
@ManyToMany(fetch = FetchType.EAGER,cascade=CascadeType.MERGE)
@JoinTable(name = "curso_disciplina",
joinColumns = { @JoinColumn(name = "idCurso") },
inverseJoinColumns = { @JoinColumn(name = "idDisciplina") })
private List<Disciplina> disciplinas;
public List<Disciplina> getDisciplinas() {
return disciplinas;
}
public void setDisciplinas(List<Disciplina> disciplinas) {
this.disciplinas = disciplinas;
}
public Long getIdCurso() {
return idCurso;
}
public void setIdCurso(Long idCurso) {
this.idCurso = idCurso;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getDuracao() {
return duracao;
}
public void setDuracao(int duracao) {
this.duracao = duracao;
}
}
package br.com.universidade.entidades;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
@NamedQueries({
@NamedQuery(name="getDisciplina",query="select ct from Disciplina as ct order by nome")
}
)
@Entity
public class Disciplina {
@Id
@GeneratedValue
private Long idDisciplina;
private String nome;
@ManyToMany(fetch = FetchType.EAGER,cascade=CascadeType.MERGE)
@JoinTable(name = "curso_disciplina",
joinColumns = {
@JoinColumn(name="idDisciplina")
},
inverseJoinColumns = {
@JoinColumn(name="idCurso")
}
)
private Set<Curso> cursos;
public Set<Curso> getCursos() {
return cursos;
}
public void setCursos(Set<Curso> cursos) {
this.cursos = cursos;
}
public Long getIdDisciplina() {
return idDisciplina;
}
public void setIdDisciplina(Long idDisciplina) {
this.idDisciplina = idDisciplina;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
package br.com.universidade.repositorio;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.universidade.DAO.DAO;
import br.com.universidade.entidades.Curso;
import br.com.universidade.entidades.Disciplina;
import br.com.universidade.util.JPAUtil;
public class CursoRepositorio implements DAO<Curso> {
public void adciona(Curso curso) {
EntityManager em = (EntityManager) JPAUtil.getInstance()
.createEntityManager();
try {
em.persist(curso);
em.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
em.getTransaction().rollback();
}
}
@SuppressWarnings("unchecked")
public List<Curso> list() {
EntityManager em = (EntityManager) JPAUtil.getInstance()
.createEntityManager();
try {
Query query = em.createQuery("from Curso");
em.getTransaction().commit();
return query.getResultList();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public Curso listParametro(String nome) {
EntityManager em = (EntityManager) JPAUtil.getInstance()
.createEntityManager();
try {
Query query =
em.createNamedQuery("getCurso.Discplina")
.setParameter(1, nome + "%");
return (Curso)query.getSingleResult();
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
public void remove(Curso curso) {
EntityManager em = (EntityManager) JPAUtil.getInstance()
.createEntityManager();
try {
curso = em.merge(curso);
em.remove(curso);
em.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
public void update(Curso curso) {
EntityManager em = (EntityManager) JPAUtil.getInstance()
.createEntityManager();
try {
em.flush();
em.merge(curso);
em.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
em.getTransaction().rollback();
}
}
}
BEAN
package br.com.universidade.mb;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.com.universidade.entidades.Curso;
import br.com.universidade.entidades.Disciplina;
import br.com.universidade.repositorio.CursoRepositorio;
@ManagedBean
public class CursoBean {
private Curso curso = new Curso();
private List<Curso> cursos;
@SuppressWarnings("rawtypes")
private DataModel listacurso;
private Disciplina disciplinas = new Disciplina();
CursoRepositorio repositorio = new CursoRepositorio();
public String adciona(){
CursoRepositorio repositorio = new CursoRepositorio();
List<Disciplina> armazena = new ArrayList<Disciplina>();
armazena.add(disciplinas);
curso.setDisciplinas(armazena);
repositorio.adciona(curso);
return "index";
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public DataModel getListaCurso() {
cursos = repositorio.list();
listacurso = new ListDataModel(cursos);
return listacurso;
}
public String excluirCurso(){
Curso cursotemp = (Curso)(listacurso.getRowData());
repositorio.remove(cursotemp);
return "index";
}
public String buscar(){
CursoRepositorio repositorio = new CursoRepositorio();
List<Disciplina> armazena = new ArrayList<Disciplina>();
armazena.add(disciplinas);
curso.setDisciplinas(armazena);
this.curso = repositorio.listParametro(this.curso.getNome());
return "pesquisacurso";
}
public String preparAlterarCurso(){
curso = (Curso)(listacurso.getRowData());
return "pesquisacurso";
}
public String atualiza(){
CursoRepositorio repositorio = new CursoRepositorio();
List<Disciplina> armazena = new ArrayList<Disciplina>();
armazena.add(disciplinas);
curso.setDisciplinas(armazena);
repositorio.update(curso);
return "index";
}
public Disciplina getDisciplinas() {
return disciplinas;
}
public void setDisciplinas(Disciplina disciplinas) {
this.disciplinas = disciplinas;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
public List<Curso> getCursos() {
return cursos;
}
public void setListcurso(List<Curso> cursos) {
this.cursos = cursos;
}
}