[RESOLVIDO] Relaciomento Hibernate + AnnotationConfiguration

10 respostas
R

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;

10 Respostas

Kanin_Dragon

Jovem,

Posta o código da classe DAO.

Abs,

R

É 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();

		}
Kanin_Dragon

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

abs,

R

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();

		}
	}
Kanin_Dragon

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,

R

Kanin,

Minha duvia é essa como acessar o objeto Periodo!

L

rfogo:
Kanin,

Minha duvia é essa como acessar o objeto Periodo!

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

R

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!

R

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;
		}
taaqui

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

Deixa eu ver se entendi...

public List<Debito> 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();

		}

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.

Criado 27 de maio de 2011
Ultima resposta 1 de jun. de 2011
Respostas 10
Participantes 4