Repetição de dados com Hibernate

Oi pessoal,

Estou tentando fazer uma busca dos dados com Hibernate através do Criteria, até ai tudo bem.
No meu banco de dados tenho uma tabela de CDs e outra com MUSICAS. Fiz um relacionamento um-para-muitos.

Na minha tabela de CDs só tem dois cds cadastrados, mas quando eu executo a busca, aparecem quatro cds, sendo a repetição
de cada cd duas vezes.

O código está assim:

Criteria c = (Criteria) session.createCriteria(Musica.class).add(Restrictions.ilike("nome", "%Music%"));
List<Musica> lista = c.list();
System.out.println(lista.size());
for (Musica m : lista) {
      System.out.println("\n-------- CD/DVD --------");
      System.out.println("ID: " + m.getCdDvd().getCdDvdId());
      System.out.println("Título: " + m.getCdDvd().getTitulo());
      System.out.println("Gravadora: " + m.getCdDvd().getGravadora());
      System.out.println("Ano: " + m.getCdDvd().getAno());
      System.out.println("Título do CD: " + m.getCdDvd().getTitulo());
      System.out.println("\n-------- MÚSICAS --------");
      for (Musica musica : m.getCdDvd().getMusicas()) {
          System.out.println(musica.getNome());
      }
}

Existe alguma forma dessa repetição não acontecer?

Valeu!

Não entendi para que o código: Restrictions.ilike("nome", "%Music%")

Eu estava vendo uns exemplos na net e achei isso.

Mas entendi que posso fazer somente uma Query normal.

Query q = session.createQuery("from Musica as m where m.nome like :busca");
q.setString("busca", "%Mus%");

Mas o problema ainda persiste. Repetições dos mesmos dados.

Talvez não seja o problema, mas eu volto a te perguntar…

para que esse comando?

Para setar a busca. Vou pegar essa busca de um JTextField e vou chamar o método para retornar um ArrayList para popular uma JTable.

Mas atualmente você não ta setando nada aí. Apenas marretando o valor %Mus%.

Se vc for pelo database mesmo, e fizer um select * from, é certo que ele retorne apenas 2 linhas? Se vc retirar essa condição, where, ele volta quantas linhas?

A Tabela CD tem dois registros

/*************************/
Tabela CD
/*************************/
ID - Titulo
1 - Primeiro CD
2 - Segundo CD

/*************************/
Tabela Musica
/*************************/
ID - CD_ID - Nome
1  - 1     - Musica 1
2  - 1     - Musica 2

Só o CD 1 tem música.

Se você executa apenas como está abaixo. oq ele traz de resposta?

E depois faça um System.out.println(); no tananho total da lista. veja o que ele vai trazer.

Apareceu 2