Relacionamento no Hibernate Annotations

5 respostas
Baldao

Fala galera!!!
Estou com um problema que aparentemente é simples mas está me deixando de cabelo em pé...
Possuo dois beans:

Livro:
@Entity
@Table(name="autores")
public class Livro {

	@Id
	@GeneratedValue
	private Long id;
	
	@Column(length=100)
	private String nome;

	@ManyToOne
	private Autor autor;
	
	@Column(length=100)
	private String editora;

...
e Autor:
@Entity
@Table(name="autores")
public class Autor {

	@Id
	@GeneratedValue
	private Long id;
	
	@Column(length=100)
	private String nome;

	@OneToMany(mappedBy="autor")
	private Set<Livro> livros;

...

O problema é que eu não consigo relacionar esses dois beans... segue o erro:

org.hibernate.exception.SQLGrammarException: could not execute query

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'livro0_.autor_id' in 'field list'

Alguém poderia me ajudar?

5 Respostas

spycall

Tenta colocar o @JoinColumn para ver se resolve

@ManyToOne  
@JoinColumn(name="ID_AUTOR")
private Autor autor;  


...


@OneToMany(mappedBy="autor")  
@JoinColumn(name="ID_AUTOR")
private Set<Livro> livros;
Baldao

Não virou! Na verdade o nome da coluna na tabela de livros é “autor” mesmo… o estranho é que ele não gera um JOIN… ele faz um select comum, por isso dá erro. Como fazer pro hibernate gerar um JOIN?

Baldao

vixe… ninguém? :?

M

Opa, beleza?Será que não é porque você definiu ambas as classes com mesmo nome de tabela?

Baldao

Hum… pode crer, que m*rda… hehehe!!!
Fazendo uns testes aqui eu acertei o nome da tabela e tive que adicionar:

@ManyToOne @JoinColumn(name="autor") private Autor autor;
senão ele buscava a coluna autor_id que não existe… Tá explicado… vlw!

Criado 14 de janeiro de 2008
Ultima resposta 15 de jan. de 2008
Respostas 5
Participantes 3