Compreender ManyToOne e ManyToMany List

Ola pessoal, estou com dificuldades de trazer uma lista de objetos usando o hibernate.

Alguem poderia me da uma força?

bom vamos la, primeiro tenho a classe cadastro

package br.com.Servicos.Models;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.OrderBy;
import javax.persistence.Table;

@Entity
@Table(name="cadastro")
public class Cadastro implements Serializable{
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="id_cadastro", nullable=false)
	private int id_cadastro;
	
	@Column(name="nome_cadastro", nullable=false)
	private String nome;
	
	@OneToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="cadastroFisico", nullable=true)
	private CadastroFisico pessoaFisica;
	
	@ManyToMany(targetEntity = Endereco.class, cascade = {CascadeType.PERSIST, CascadeType.MERGE})    
	@JoinTable(name = "endereco", schema = "comercial", joinColumns = {@JoinColumn(name = "endereco")})   
	private List<Endereco> listaEndereco = new ArrayList<Endereco>();
	
	/*
	@JoinColumn(name="cadastroJuridico", nullable=true)
	private CadastroJuridico pessoaJuridica;
	*/
	public int getId_cadastro() {
		return id_cadastro;
	}
	public void setId_cadastro(int id_cadastro) {
		this.id_cadastro = id_cadastro;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public CadastroFisico getPessoaFisica() {
		return pessoaFisica;
	}
	
	public void setPessoaFisica(CadastroFisico pessoaFisica) {
		this.pessoaFisica = pessoaFisica;
	}
	
	public List<Endereco> getListaEndereco() {
		return listaEndereco;
	}
	
	public void setListaEndereco(List<Endereco> listaEndereco) {
		this.listaEndereco = listaEndereco;
	}
	
	
	
	/*
	public CadastroJuridico getPessoaJuridica() {
		return pessoaJuridica;
	}
	public void setPessoaJuridica(CadastroJuridico pessoaJuridica) {
		this.pessoaJuridica = pessoaJuridica;
	}*/

	
}

depois tenho a classe de endereços
ae vai

package br.com.Servicos.Models;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="endereco")
public class Endereco implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_endereco", nullable=false)
	private int id_endereco;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="cadastro", nullable=false)
	private Cadastro cadastro;
	
	@Column(name="descricao", nullable=true)
	private String descricao;
	
	@Column(name="rua", nullable=true)
	private String rua;
	
	@Column(name="numero", nullable=true)
	private String numero;
	
	@Column(name="complemento", nullable=true)
	private String complemento;
	
	@Column(name="bairro", nullable=true)
	private String bairro;
	
	@Column(name="cep", nullable=true)
	private String cep;
	
	@Column(name="cidade", nullable=true)
	private String cidade;
	
	@Column(name="estado", nullable=true)
	private String estado;
	
	@Column(name="observacao", nullable=true)
	private String observacao;

	
	public int getId_endereco() {
		return id_endereco;
	}

	public void setId_endereco(int id_endereco) {
		this.id_endereco = id_endereco;
	}
	
	public Cadastro getCadastro() {
		return cadastro;
	}

	public void setCadastro(Cadastro cadastro) {
		this.cadastro = cadastro;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getRua() {
		return rua;
	}

	public void setRua(String rua) {
		this.rua = rua;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
}

ae quero trazer uma lista de endereços quando vir a lista de cadastros

Desde ja agradeço.

Obrigado.

Dá uma olhada nesse link:
http://techbot.me/2008/01/de-many-to-many-para-many-to-one-com-jpa-2/

Eu presciso trazer uma lista de enderecos

Entenda como funcionam os relacionamentos e vc vai poder trazer a lista do que quiser.

Ok, estou lendo o material que você me passou,
agradeço a atenção.