Popular objeto dentro de outro objeto

Pessoal estou com a seguinte dúvida preciso popular três objetos matricula, aluno, disciplina sendo que matricula contem os objetos aluno e disciplina,
queria saber se tem alguma forma de o hibernate ja fazer isto automatico sem eu ter que setar objeto por objeto.

Estava fazendo da seguinte forma mas ele cria um objeto com os três e não o objeto matricula com a disciplina e aluno dentro.

[code]session = sessionFactory.openSession();

		String sql = "FROM DisciplinaDTO d, MatriculaDTO m, AlunoDTO a " +
				"WHERE d.codigoDisciplina = m.disciplina AND a.codigoAluno = m.aluno ";
		
		Query query = session.createSQLQuery(sql).addEntity(MatriculaDTO.class);
		

		listMatriculas = (List<MatriculaDTO>) query.list();[/code]

Obrigado!

Sim, ele faz isso.

Mas você precisa:

Criar classes de modelo
"Anotar" elas de acordo com o que está no banco de dados
Anotar os relacionamentos entre as classes de acordo com o relacionamento das tabelas
talvez criar umas nameds queries de acordo com a sua regra

Quando trouxer dados do banco usando o Hibernate, os valores relacionados a essa classe de modelo (o relaciomento dela com outro modelo e com outra tabela, consequentemente, considerando que as anotaćoes de relacionamento estejam feitas) virão também. Você até pode setar se esses dados virão na hora (eager) ou quando você solicitar (lazy).

Exemplo, se pessoa tem varios carros, quando buscar pessoal, os carros relacionados a ela virão, considerando que você mapeou certinho…

public class Pessoa{
    @ManyToMany 
.//...
    private List< Carro> carros;
}

Pesquise sobre mapeamento ORM com Hibernate :slight_smile:

[]`s

Obrigado eu consegui desta forma também, só não sei se é a mais resposta.

[code]String sql = “FROM MatriculaDTO m inner join fetch m.disciplina inner join fetch m.aluno where m.disciplina.nome like :disciplina”;

		Query query = session.createQuery(sql);
		query.setString("disciplina", disciplina+'%');
		listMatriculas = (List<MatriculaDTO>) query.list();[/code]