Fala ai pessoal...
seguinte, estou tentando fazer um mapeamento one to many, onde existe uma classe empresa e outra login.
Quando gera os bancos, o hibernate gera 3 bancos:
empresas,
login,
empresas_login,
este último com as fields:
empresas_id_empresa;
login_id_login
O fucionamento é: uma empresa pode ter muitos logins, mas, um login pode perterncer somente a uma empresa. Minhas classes estão assim:
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
@Entity (name="empresas")
public class Empresa {
@Id
@GeneratedValue
private int id;
private String nome;
@OneToMany
private Set<Login> login = new HashSet<Login>();
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setLogins(Set<Login> logins) {
this.login = logins;
}
public Set<Login> getLogins() {
return login;
}
}
Classe Login:
meu Empresa.hbm.xmlimport javax.persistence.*;
@Entity(name = "login")
public class Login {@Id
@GeneratedValue
private int id;
private String nome;
private String usuario;
private String senha;
@ManyToOne(targetEntity = Empresa.class)
@JoinColumn(name="empresa", nullable=false)
private Empresa empresa;
public int getId() {
return id;
}public void setId(int id) {
this.id = id;
}public String getNome() {
return nome;
}public void setNome(String nome) {
this.nome = nome;
}public String getUsuario() {
return usuario;
}public void setUsuario(String usuario) {
this.usuario = usuario;
}public String getSenha() {
return senha;
}public void setSenha(String senha) {
this.senha = senha;
}public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}public Empresa getEmpresa() {
return empresa;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Empresa" table="empresas">
<id name="id" column="id_empresa" type="int" unsaved-value="0">
<generator class="increment"/>
</id>
<property name="nome" column="nome" type="string"/>
<set name="login">
<key column="id_empresa"/>
<one-to-many class="Login"/>
</set>
</class>
</hibernate-mapping>
Login.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Login" table="login">
<id name="id" column="id_login" type="int" unsaved-value="0">
<generator class="increment"/>
</id>
<many-to-one class="Empresa" name="Empresa" column="id_empresa"
foreign-key="FK_id_empresa" not-null="true"/>
<property name="nome" column="nome" type="string"/>
</class>
</hibernate-mapping>
por fim, meu hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/sistemachamado</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.show.sql">true</property>
<property name ="hibernate.format.sql">true</property>
<mapping class="Login" />
<mapping class="Empresa" />
<mapping resource="Empresa.hbm.xml" />
<mapping resource="Login.hbm.xml" />
</session-factory>
</hibernate-configuration>