Meu primeiro post aqui ^^
Pessoal… Já procurei este erro aqui no fórum, porém o que eu achei não resolveu meu problema e por isso estou criando este novo tópico.
Meu Hibernate está exibindo o seguinte erro ao tentar criar as tabelas.
Exception in thread "main" org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: modelo.Bairro.Cidade in modelo.Cidade.bairros
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:552)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:517)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:756)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:93)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:61)
at hibernate.TabelasFactory.create(TabelasFactory.java:9)
at hibernate.TabelasFactory.main(TabelasFactory.java:16)
Segue abaixo as Classes Bairro e em seguida a Classe Cidade
[code]package modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity //Anotação que informa que esta classe é de persistência
@Table(schema=“noLugar”) //Anotação que informa a tabela e esquema mapeada
public class Bairro implements Serializable{
private static final long serialVersionUID = 1L;
@Id //Definição da chave primária
@GeneratedValue(strategy = GenerationType.IDENTITY) //Definição do mecanismo da chave primária
@Column(name="idBairro") //Definição da coluna mapeada para o atributo
private int idBairro;
@Column(name="bairro", length=40, nullable=false)
private String bairro;
//Muitos bairros tem uma cidade
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="idCidade", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Cidade cidade;
public Bairro(){
}
public int getIdBairro() {
return idBairro;
}
public void setIdBairro(int idBairro) {
this.idBairro = idBairro;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
}[/code]
[code]package modelo;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity //Anotação que informa que esta classe é de persistência
@Table(schema=“noLugar”) //Anotação que informa a tabela e esquema mapeada
public class Cidade implements Serializable{
private static final long serialVersionUID = 1L;
@Id //Definição da chave primária
@GeneratedValue(strategy = GenerationType.IDENTITY) //Definição do mecanismo da chave primária
@Column(name="idCidade") //Definição da coluna mapeada para o atributo
private int idCidade;
@Column(name="cidade", length=40, nullable=false)
private String cidade;
//Uma Cidade tem vários bairros
@OneToMany(mappedBy="Cidade", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Bairro> bairros;
public Cidade(){
}
public Collection<Bairro> getBairros() {
return bairros;
}
public void setBairros(Collection<Bairro> bairros) {
this.bairros = bairros;
}
public int getIdCidade() {
return idCidade;
}
public void setIdCidade(int idCidade) {
this.idCidade = idCidade;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
}[/code]
Segue abaixo meu gerador de tabelas
[code]package hibernate;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class TabelasFactory {
public static void create(AnnotationConfiguration cfg) {
new SchemaExport(cfg).create(false, true);
}
public static void main(String[] args) {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(modelo.Bairro.class);
cfg.addAnnotatedClass(modelo.Cidade.class);
create(cfg);
}
} [/code]
E por último meu Hibernate.cfg.xml
[code]<?xml version="1.0" encoding="utf-8"?>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost/noLugar
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="show_sql">true</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<property name="connection.pool_size">10</property>
<!-- mapping classes -->
<mapping class="modelo.Bairro" />
<mapping class="modelo.Cidade" />
</session-factory>
[/code]
Tirando o relacionamento OneToMany e ManyToOne…
Deixando apenas as tabelas sem um relacionando ele gera as tabelas normalmente… O problema é quando coloco o relacionamento entre eles…
Alguém poderia me ajudar?