[RESOLVIDO] Relaciomento Hibernate + AnnotationConfiguration

Pessoal,

Estudo a pouco tempo Hibernate e tenho algumas dúvidas em sobre relacionamento de Entity.
Por exemplo em um DAO carrego uma lista de objetos Debito . Nessa lista a um campo cdPeriodo que é um campo do objeto Periodo. Preciso carregar nessa lista não só o cdPeriodo e sim a descrição do objeto Periodo (ds_periodo) . Tentei fazer o mapeamento na classe de Entidade, porém sem sucesso!

Alguém teria alguma solução para esse caso?

Débitos:

public class Debito implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_debito")
    private Long idDebito;

    @Basic(optional = false)
    @Column(name = "vl_debito")
    private BigDecimal vlDebito;

    @JoinColumn(name = "cd_periodo", referencedColumnName = "cd_periodo")
    @ManyToOne(optional = false)
    private Periodo cdPeriodo;

Periodo

    @Id
    @Basic(optional = false)
    @Column(name = "cd_periodo")
    private Integer cdPeriodo;
    @Basic(optional = false)
    @Column(name = "ds_periodo")
    private String dsPeriodo;
    @Basic(optional = false)
    @Column(name = "id_encerrado")
    private char idEncerrado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cdPeriodo")
    private Collection<Debito> debitoCollection;

Jovem,

Posta o código da classe DAO.

Abs,

É uma Criteria Simples:

	public List<Debito> carregarDebito()
			throws Exception {
		try {

			this.session = HibernateUtil.getSessionFactory().openSession();
			this.tx = this.session.beginTransaction();

			Criteria criteria = this.session.createCriteria(Debito.class);
			
			return criteria.list();


		} catch (Exception e) {

			e.printStackTrace();

			throw new Exception();

		}

Jovem,
Não entendi este metodo. É criado um criteria para a classe Debito mas o retorno do metodo é um List

abs,

Consertando:

	public List<Debito> carregarRazao()
			throws Exception {
		try {

			this.session = HibernateUtil.getSessionFactory().openSession();
			this.tx = this.session.beginTransaction();

			Criteria criteria = this.session.createCriteria(Debito.class);
			
			return criteria.list();


		} catch (Exception e) {

			e.printStackTrace();

			throw new Exception();

		}
	}

Jovem,

Agora sim … Mas por exemplo quando você tentar acessar o objeto Perido atraves da lista de Debito exibe alguma mensagem de erro?
Creio pelo seu mapeamento quando acessar o objeto Perido ocorrerá “Lazy Exception”.

abs,

Kanin,

Minha duvia é essa como acessar o objeto Periodo!

[quote=rfogo]Kanin,

Minha duvia é essa como acessar o objeto Periodo![/quote]

Não entendi muito bem,mas vc estaria tentando fazer uma consulta certo!

Isso, explicando grosseiramente o que eu queria:

“Por exemplo em um DAO carrego uma lista de objetos Debito . Nessa lista a um campo cdPeriodo que é um campo do objeto Periodo. Preciso carregar nessa lista não só o cdPeriodo e sim a descrição do objeto Periodo (ds_periodo) . Tentei fazer o mapeamento na classe de Entidade, porém sem sucesso!

O Mapeamento já estava sendo feito, como a aplicação é flex+java o metodo get deve ser declarado também no Modelo.as:

		public function get periodo():String
		{
			return this.cdPeriodo.dsPeriodo;
		}

[Edit] - Já foi resolvido… pode revelar a mensagem abaixo.

Deixa eu ver se entendi…

[code] public List carregarDebito()
throws Exception {
try {

		this.session = HibernateUtil.getSessionFactory().openSession();
		this.tx = this.session.beginTransaction();

		Criteria criteria = this.session.createCriteria(Debito.class);
		Debito debitos = (Debito) criteria.list();
                    for(Debito debito: debitos){
                            System.out.println(debito.getCdPeriodo().getDsPeriodo());
		return debitos;


	} catch (Exception e) {

		e.printStackTrace();

		throw new Exception();

	}[/code]

Já que não tem nada anotado com FetchType do tipo Lazy ou seja carregamento sob demanda(lazy-loading), ele faz o carregamento de todas as propriedades.
Me corrijam se estiver errado.