[resolvido] exception hibernate

8 respostas
caraujocruz
Boa Tarde Pessoal,

Comecei a usar Hibernate a pouco  tempo e estou com um problema quando vou gerar a tabela contaPagar acredito que por causa da anotação @ManyToOne ele da essa exception, alguém ja teve esse problema ?

[list]

0 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.3.0.GA

16 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.2.2

16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found

16 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib

31 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling

109 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml

109 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml

390 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null

421 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect

546 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: br.com.provecta.estudo.hibernate.Produto

593 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity br.com.provecta.estudo.hibernate.Produto on table Produto

655 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: br.com.provecta.estudo.hibernate.Fornecedor

655 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity br.com.provecta.estudo.hibernate.Fornecedor on table Fornecedor

655 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: br.com.provecta.estudo.hibernate.ContaPagar

655 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity br.com.provecta.estudo.hibernate.ContaPagar on table ContaPagar

Exception in thread main java.lang.NoSuchMethodError: javax.persistence.Column.table()Ljava/lang/String;

at org.hibernate.cfg.Ejb3Column.buildColumnFromAnnotation(Ejb3Column.java:366)

at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1128)

at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:733)

at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:498)

at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)

at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:756)

at org.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:93)

at org.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:61)

at br.com.provecta.estudo.hibernate.GerarTabelas.main(GerarTabelas.java:11)

[/list]

Classe contaPagar .

imports ...

@Entity
public class ContaPagar {
	
	@Id
	@GeneratedValue
	private Long id;
	private String descricao;
	private Double valor;
	@Temporal(TemporalType.DATE)
	private Calendar data;

	@ManyToOne
	private Fornecedor fornecedor;
	private boolean pago;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Double getValor() {
		return valor;
	}
	public void setValor(Double valor) {
		this.valor = valor;
	}
	public Calendar getData() {
		return data;
	}
	public void setData(Calendar data) {
		this.data = data;
	}
	public Fornecedor getFornecedor() {
		return fornecedor;
	}
	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}
	public boolean isPago() {
		return pago;
	}
	public void setPago(boolean pago) {
		this.pago = pago;
	}

}

Classe Fornecedor … não sei se preciso colocar alguma anotação aqui !! …

@Entity
public class Fornecedor {
	
	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private String descricao;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

}

Obrigado,
Carlos

8 Respostas

jyoshiriro

pela mensagem
31 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling

parece que estas rodando sua aplicacao com Java 4. Tente rodar com Java 5 ou superior.

caraujocruz

valew pela atenção jyoshiriro,
estou usando o Java 6 . .
Quando eu tiro o atributo do fornecedor funciona normal …

@ManyToOne
	private Fornecedor fornecedor;
ralphsilver

Qual a versão do hibernate?

Verifica se realmente está usando o java 4… pode ser que vc tenha instalado o java 6 mas ele ainda busque referencia de outra versão

caraujocruz

Qual a versão do hibernate?

Verifica se realmente está usando o java 4… pode ser que vc tenha instalado o java 6 mas ele ainda busque referencia de outra versão

Estou usando o Hibernate 3 …
sobre o versão do java eu verifiquei pelo eclipse (window/preference/java/installed jres) está marcada a opção jdk1.6.0.16 verifiquei se há outras versões do java na maquina em arquivos de programas/java e só tem o jdk1.6.0.16 e JRE6, já tentei compilar com os dois e da a mesma exception.

Será que devo tentar usar uma versão anterior do java ou não tem nada a ver ?

valew …

LPJava

é bem simples, veja a versao que está usando do annotations + hibernate, eu tive um problema desse algumas semanas atras.

Veja esse meu post.

Aqui eu coloquei para download, um pacote hibernate para uso.

Hibernate + jpa

flw, abraco

ralphsilver

rdgc:
Coloca no Fornecedor a referência para ContaPagar com @OneToMany[b].

Algo assim:

@OneToMany(mappedBy="fornecedor", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private List<ContaPagar> lista;

flw!

@ManyToOne @JoinColumn(name="<nome da coluna desta entidade>", referencedColumnName="<nome da columa referenciada da outra entidade>") private Fornecedor fornecedor;

vc tem que colocar o mapeamento da coluna também… utilize esse joincolumn

caraujocruz

Pessoal … funciono !!!

Mesmo colocando essa linha …

@OneToMany(mappedBy="fornecedor", cascade=CascadeType.ALL, fetch=FetchType.LAZY)   
private List<ContaPagar> lista;

e mapeando a coluna como vocês pediram continuo dando a exception … ai troquei os jars pelo dos Blog do LPJava e acrescentei o slf4j-api 1.5.10.jar, slf4j-simple 1.5.10.jar e ejb3-persistence.jar …

funciono Legal …

Valew pela força Pessoal ! Muito Obrigado o Todos !!.. :lol:

R

Coloca no Fornecedor a referência para ContaPagar com @OneToMany[b].

Algo assim:

@OneToMany(mappedBy="fornecedor", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private List<ContaPagar> lista;

flw!

Criado 13 de janeiro de 2010
Ultima resposta 13 de jan. de 2010
Respostas 8
Participantes 5