Duvidas com relacionamento Many to Many do hibernate e sobre Bean validation

Boa tarde Galera!

Por favor me ajudem, pois não está sendo fácil encontrar bom conteúdo no Google e vocês podem já ter enfrentado esse problema, sendo bem mais fácil para vocês.
Estou fazendo um sisteminha simples voltado para o controle de frequência numa escola de cursos profissionalizantes.
Estou tendo problemas com as entidades Curso e Aluno, um curso pode ter muitos alunos, contudo os alunos também podem muitos cursos .
Eu não consigo entender como fazer isso com o Hibernate. Estou usando o netbeans que me ajudou (sujeriu) a criar uma lista alunos em na entidade curso e cursos na entidade alunos. Até ai eu estava feliz pensando que ia funcionar…rs…mas ao fazer o form e tentar salvar a aluno já com os curso a qual ele pertence, ele não apresentou mensagem de erro alguma, mas não salvou o dado também. O que pode estar acontecendo?
Galera tem muito codigo para mim colocar aqui, caso seja realmente necessário, vocês precisem para responder me avisem que em seguida eu cologo. Blz!?

Também estou precisando fazer validação do cpf e rg, estou vendo alguma coisa mais fácil do que eu mesmo fazer tudo sozinho que usava de fazer, dai vi que tem algo de beans validator, uma biblioteca da caelum para validação, mas ainda não compreendi direito, poderiam me dar algumas dicas sobre como usar esse bean validator?

Realmente grato!

Reinildes Oliveira

Puxa pessoal ninguem me respondeu! :frowning:

Qualé estou precisando de um esclarecimento aqui!

Por favor alguém me ajuda!

Posta apenas o codigo do modelo da classe “Aluno” e “Curso” para poder te ajudar com o erro .
Ta usando JPA ? hibernate ? qual versão ?

em relacionamentos manyToMany e criada outra tabela por exemplo "aluno_curso"
com o id_cliente e id_curso. existe muito material de estudo aqui no forum cara so procurar mais

Beleza vamos lá então!

Classe Aluno:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package models;

import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;

/**
*

  • @author reinildes
    */
    @Entity
    public class Aluno extends Pessoa {

    @ManyToOne
    private Responsavel responsavel;
    @ManyToMany(mappedBy = “alunos”)
    private List cursos;
    private String diaCurso;
    private String horarioCurso;

    public Aluno() {
    }

    public Responsavel getResponsavel() {
    return responsavel;
    }

    public void setResponsavel(Responsavel responsavel) {
    this.responsavel = responsavel;
    }

    public List getCursos() {
    return cursos;
    }

    public void setCursos(List cursos) {
    this.cursos = cursos;
    }

    public String getDiaCurso() {
    return diaCurso;
    }

    public void setDiaCurso(String diaCurso) {
    this.diaCurso = diaCurso;
    }

    public String getHorarioCurso() {
    return horarioCurso;
    }

    public void setHorarioCurso(String horarioCurso) {
    this.horarioCurso = horarioCurso;
    }

    public Aluno(Responsavel responsavel, List cursos) {
    this.responsavel = responsavel;
    this.cursos = cursos;
    }

    public Aluno(Responsavel responsavel, List cursos, String nome, String rg, String cpf, Date dataNascimento, String telefone, String email) {
    super(nome, rg, cpf, dataNascimento, telefone, email);
    this.responsavel = responsavel;
    this.cursos = cursos;
    }
    }
    [/code]

Classe Curso:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package models;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.validation.constraints.NotNull;




/**
 *
 * @author reinildes
 */
@Entity
public class Curso implements Serializable {


    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    @NotNull(message="Erradp")
    private String nome;
    @NotNull
    private String descricao;
    private int numeroDeAulas;
    private int mesesDuracao;
    @ManyToMany
    private List <Aluno> alunos;

 
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    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 getNumeroDeAulas() {
        return numeroDeAulas;
    }

    public void setNumeroDeAulas(int numeroDeAulas) {
        this.numeroDeAulas = numeroDeAulas;
    }

    public int getMesesDuracao() {
        return mesesDuracao;
    }

    public void setMesesDuracao(int mesesDuracao) {
        this.mesesDuracao = mesesDuracao;
    }

    public List<Aluno> getAlunos() {
        return alunos;
    }

    public void setAlunos(List<Aluno> alunos) {
        this.alunos = alunos;
    }
}

Como pode ver a classe aluno extend a classe pessoa:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package models;

import br.com.caelum.stella.bean.validation.CPF;
import com.sun.istack.internal.NotNull;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


/**
 *
 * @author reinildes
*/


@MappedSuperclass
public class Pessoa implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    
   
    private String nome;
    private String rg;
   
    @CPF
    private String cpf;
    @Temporal(TemporalType.DATE)
    private Date dataNascimento;
    private String telefone;
    private String email;
    private String detalhes;

    public Pessoa() {
    }

    public Pessoa(String nome, String rg, String cpf, Date dataNascimento, String telefone, String email) {
        this.nome = nome;
        this.rg = rg;
        this.cpf = cpf;
        this.dataNascimento = dataNascimento;
        this.telefone = telefone;
        this.email = email;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getDetalhes() {
        return detalhes;
    }

    public void setDetalhes(String detalhes) {
        this.detalhes = detalhes;
    }
}

Abaixo print do db:

Link: http://imageshack.us/photo/my-images/855/capturadetelade20130226.png/

Estou usando o hibernate que vem no netbeans 7.2, acredito que seja o 3.