[Resolvido]HQL pegar dados de duas tabelas e retornar no mesmo dataTable

Olá pessoal, olha eu aqui novamente com mais duvidas :frowning:

A de agora é o seguinte. Eu tenho duas tabelas que são: Imovel(ManyToOne) e Residencial(OneToMany), e estou com dificuldades ao pegar os dados das duas tabelas para poder retornar na minha dataTable.

A classe(tabela) Imovel tem uma chave estrangeira da classe(tabela) Residencial que no caso é o codigo_residencial. Na classe(tabela) Residencial tem o código, nome e mais algumas coisas. Eu quero que o HQL pegue os dados da classe(tabela) Imovel e com a chave estrangeira de Residencial pegar o nome do residencial que tem o codigo marcado na tabela Imovel.

Resumindo: Pegar os dados da tabela Imovel e com o id(no meu caso é codigo) da chave estrangeira e ir na outra tabela(Residencial) e pegar o nome e me retornar o nome ao invés do id.

Vou postar parte do código para vocês darem uma olhada. Se tiver alguma coisa errada me ajudem, estou em fase de aprendizado ainda. Na parte em que está escrito “Codigo aqui” é porque existe código naquela parte que acho que não seria necessário postar para economizar código e facilitar a ler.

Parte da Classe Imovel:

[code]@Entity
@Table(name=“tb_imovel”)
@SequenceGenerator(name=“imovel_seq”, sequenceName = “imovel_seq”, allocationSize = 1, initialValue = 1)
public class Imovel {

@Id
@PrimaryKeyJoinColumn
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "imovel_seq") 
@Column(name="codigo_imovel", unique = true, nullable = false)
private int codigo;

/*

  • Codigo aqui
    */

    @ManyToOne
    @JoinColumn(name = “codigo_residencial”, referencedColumnName = “codigo_residencial”)
    private Residencial residencial;
    /*
    *Getter’s e Setter’s
    */
    }
    [/code]

Parte da Classe Residencial:

[code]@Entity
@Table(name=“tb_residencial”)
@SequenceGenerator(name=“residencial_seq”, sequenceName = “residencial_seq”, allocationSize = 1, initialValue = 1)
public class Residencial {

@Id
@PrimaryKeyJoinColumn
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "residencial_seq") 
@Column(name="codigo_residencial", unique = true, nullable = false)
@OneToMany(mappedBy="residencial")
private int codigo;

/*

  • Mais codigo e Getters e Setters
    */

}
[/code]

Interface ImovelDao:

public interface ImovelDao {

	public void incluir(Imovel imovel) throws SiteException;
    public void excluir(Imovel imovel) throws SiteException;
    public void alterar(Imovel imovel) throws SiteException;
    public List<Imovel> listImovel() throws SiteException;
}[/code]

Parte da Classe ImovelDaoImpl:

[code]public class ImovelDaoImpl implements ImovelDao {


/*
* Codigo aqui
*/

	@Override
	public List<Imovel> listImovel() throws SiteException {
		em.getTransaction().begin();
		Query query = em.createQuery("FROM Imovel");
		List<Imovel> imovelGuardar = query.getResultList();
		em.getTransaction().rollback();
		return imovelGuardar;
	}
}

Parte da Classe ImovelBean:

[code]
public class ImovelBean {
public void listImovel(ActionEvent evt){
try {
imovelGuardar = imovelDao.listImovel();

	} catch (SiteException e) {
		UtilFaces.addMensagem(e.getMessage(), FacesMessage.SEVERITY_ERROR);
	}
}

}[/code]

Na classe ImovelDaoImpl quando eu mudo a query para:

Retorna este erro para mim: SEVERE: java.lang.NumberFormatException: For input string: “referencia”

Se eu deixo apenas:

onde deveria retornar o nome do residencial na dataTable me retorna assim: [quote][javax.faces.model.SelectItem@46e3ac, javax.faces.model.SelectItem@d3886, javax.faces.model.SelectItem@1fa0e79][/quote]

Alguém sabe o que eu posso fazer ? Alguma dica ?
Penso eu que o que eu já fiz está errado para o que pretendo fazer :confused:

Consegui resolver pessoal, dois dias só com isto e o problema era no meu xhtml.

Errado:

Correto:

Apesar de ninguém responder agradeço a todos, rs.

Só estou incomodado agora é que quando vou listar os imoveis o hibernate faz 3 consultas no residencial. Mas quando vou listar residencial só faz uma. Alguém sabe o porque ?