Problema com Hibernate Annotations

Olá, amigos!

Estou com um pequeno problema qdo executo a classe GeraBanco. Ocorre um erro em uma de minhas anotações.

Erro:

Exception in thread "main" org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: br.com.guaicurus.modelo.Requisicao.forma_pagamento in br.com.guaicurus.modelo.FormaPagamento.requisicao at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:578) at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:543) at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1163) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:329) at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:789) at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:128) at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91) at br.com.guaicurus.util.GeraBanco.main(GeraBanco.java:21)

Uma requisicão deve conter uma forma de pagamento, enquanto uma forma de pagamento pode estar em varias requisiçoes.

Na classe FormaPagamento :

@OneToMany(mappedBy="forma_pagamento", fetch=FetchType.LAZY) @Cascade(CascadeType.ALL) private Collection<Requisicao> requisicao;

Na classe Requisição :

@ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="id_forma_pagamento", insertable=true, updatable=true) @Fetch(FetchMode.JOIN) @Cascade(CascadeType.SAVE_UPDATE) private FormaPagamento formaPagamento;

Estou fazendo certo?


Você tem que colocar no mappedBy o nome do atributo.. e nao da coluna

Você tem que colocar no mappedBy o nome do atributo… e nao da coluna

@ManyToOne(fetch=FetchType.EAGER) @Fetch(FetchMode.JOIN)

Use apenas:

O many to one já é EAGER por default…

Apesar de que uma boa pratica seria deixar tudo LAZY

Obrigado!

Estava passando o atributo errado para o mappedBy, você tinha razão.

Desculpe a demora, mas tive problemas com a internet.