Desculpem se o título não foi muito descritivo, mas a dúvida é esta:
Eu tenho, no meu banco de dados, uma tabela Livros e outra Categoria_Livro. A tabela Livros possui um atributo livro_idCategoria, que refere-se ao atributo cat_id da tabela Categoria_Livro.
Minha dúvida surge quando preciso representar isso nas classes Java.
Eu criei uma classe Livro e uma classe CategoriaLivro. Eu devo fazer:
public class Livro {
...
private CategoriaLivro categoria;
...
}
Ou:
publicclassLivro{...privateintidCategoria;...}
A dúvida veio principalmente porque estou tentando mapear com as Annotations da JPA para o Hibernate… Se alguém puder me explicar como faço isso direitinho também, ficarei agradecido.
Assim, na tabela ele é um int, o Hibernate sabe que ele é um int quando vc anota com @ManyToOne ou @OneToOne, então, você deve mapeá-lo para o int que você tem no banco.
Assim:
//@Column(name="livro_idCategoria") // NAO PODE USAR @COLUMN COM @ManyToOne, @OneToOne, @OneToMany e @ManyToMany, quando essas anotações estiverem presente, use @JoinColumn
@ManyToOne
@JoinColumn(name="livro_idCategoria")
public CategoriaLivro getCategoria() {
return categoria;
}