Como utilizar o FindById() do Hibernate no GenericHibernateDAO

Olá!

Estou com dúvidas de como utilizar a session FindById() para testar se uma classe está recebendo a chave estrangeira de outra.
Como exemplo, vou mostrar a classe ItemBiblioteca que recebe FK de Editora. Como faço isso no Hibernate?
Nos códigos gerados vi o seguinte:

@JoinColumn(name = "CodEditora", referencedColumnName = "CodEditora") @ManyToOne(optional = false) private Editora codEditora;

Só isso basta?

Como faço para testar se a classe ItemBiblioteca pega mesmo a Chave de Editora?
Eu tava fazendo assim:

[code]EditoraDAO editoraDAO = new EditoraDAO();
Editora editora = new Editora();
editora.getCodEditora();
editora.getNomeEditora();
editora.getLogradouro();
editora.getBairro();
editora.getCidade();
editora.getCep();
editora.getUf();
editora.getTelefone();
editora.getEmail();
editora.getFax();
editora.getLinkSite();
editora.getDataCadastro();

  editoraDAO.findById(1);[/code]

mas isso não me retorna nada. :frowning:

PS.: Lembrando que ItemBiblioteca herda atributos para Livro e outros tipos.

Ajudem -me! :shock:

Cara, eu costumo fazer assim:

@JoinColumn(name = "CodEditora")  
   @ManyToOne 
   private Editora codEditora; 

E para procurar o id, eu costumo fazer desse jeito:

public String getId(Integer idEditora) {

		Session se = HibernateUtil.getSession();
		try {
			EditoraDAO editoraDAO = DaoFactory.getInstance().getEditoraDao(se);
			Editora editora = editoraDAO .findById(idEditora, false)                

			return id;
		} catch (Exception e) {
			System.out.println("Erro ao procurar id : "+e);
		} finally {
			HibernateUtil.closeSession(se);
		}
	}

Claro que se eu estiver errado, que me corrijam, fiz agora de cabeça!!!
Espero que te ajude!!!
Att;
Daniel

Olá Daniel!!

Não deu certo o código de teste. :frowning:

Como eu faço para saber se a classe ItemBiblioteca recebe a chave primaria da classe Editora?

Alguém pode me ajudar?
:wink:

Olá Jackye tudo bem?
Desculpe pela demora, é que aqui está osso…
Eu tinha escrito o código de cabeça e acabei escrevendo errado…
Vê se agora vai!!!

public CoEditora getId(int idCoEditora) {
		CoEditora coEditora = null;
		Session se = HibernateUtil.getSession();
		EditoraDao dao = DaoFactory.getInstance().getEditoraDao(se);

		try {
			coeditora = dao.findById(idCoEditora, false);
		} finally {
			HibernateUtil.closeSession(se);
		}
		return coEditora;
	}

Em que parte que não deu certo?
As vezes é melhor postar o erro tbm pra poder analisar melhor sabe?
Espero ter ajudado!
Att;
Daniel

Olá Daniel!

Eu tenho uma classe chamada GenericHibernateDAO onde tem o seguinte código referente ao FindById():

@Override public T findById(ID id) { T entidade = (T) getSession().load(getEntidadePersistente(), id); return entidade; }

Como eu tô utilizando o modelo MVC para criar a aplicação, tenho um pacote para testes, será que poderia me indicar um código.
Por isso tava tentando utilizar o seguinte código:

[code]EditoraDAO editoraDAO = new EditoraDAO();
Editora editora = new Editora();
editora.getCodEditora();
editora.getNomeEditora();
editora.getLogradouro();
editora.getBairro();
editora.getCidade();
editora.getCep();
editora.getUf();
editora.getTelefone();
editora.getEmail();
editora.getFax();
editora.getLinkSite();
editora.getDataCadastro();

  editoraDAO.findById(1);  [/code]

Olá Jackye!!!
Na parte do teu código, vc já experimentou colocar assim pra ver se pega o id?

Att;
Daniel

Olá Daniel!

Quando inseri aquela parte no código deu erro que dizia que necessitava criar método na classe Editora.
Eu quero usar o FindById() pra buscar dados no BD, mas não consegui entender a lógica, então tentei usar o código a seguir:

[code]Session secao = HibernateUtil.getSessionFactory().openSession();

    Editora editora = (Editora) secao.load(Editora.class, 1);
               
    System.out.println(editora.getNomeAutor());[/code]

Escolhi que ele me retornasse o nome da editora.

Mas fica a dúvida de como usar o FincById()!! :cry:

Olha o código da Classe DAO de Editora:

public class EditoraDAO extends GenericHibernateDAO<Editora, Integer> { public static EditoraDAO fabricaEditoraDAO(){ return new EditoraDAO(); } }

A classe EditoraDAO tem Extends em GenericHibernateDAO que é onde está o código da Session FindById().
E aí como fica? Como posso adaptar o seu código para usar no meu? Alguns campos mudam.

Abraços.