Bom dia, estou estudando o Hibernate e nao consigo sai de um problema, tenho o seguinte relacionamento
tabela 1
- id - Chave Primaria
- nome1
- nome2
tabela 2
- id_tabela1 Chave Primaria
- texto Chave Primaria
- texto
tabela 3
- id_tabela1 Chave Primaria
- texto Chave Primaria
- texto
Como ficariam os hbm.xml para estas tabelas ?
no site do GUJ tem um ótimo tutorial sobre hibernate kra, la tem um caso igual esse seu ai, vale apena dar uma olhada.
Ja vi este tutorial e fiz exatamente o que pedem mas nao ta funcionando, minha duvida e se quanto eu executar um list a consulta tem que trazer os dados da tabela1 e tabela2, pois executo um lista para a tabela 1 ele traz os dados da tabela 1 mas os sets do been vem com null e quanto faco o list na tabela 2 nao retornar nada e acontece este erro:
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of br.com.teste.domain.Casquilho30.modelo
os mapeamentos e beans sao estes:
hbm da tabela 1
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.teste.domain.Modelo" table="mrimodelo">
<id name="id" type="integer" column="id">
<generator class="native"/>
</id>
<property name="modelo" column="modelo" type="string" not-null="false" length="50"/>
<property name="serial" column="serial" type="integer" not-null="false" length="10"/>
<set name="classesCamisa">
<key column="id_modelo"/>
<one-to-many class="br.com.teste.domain.ClasseCamisa"/>
</set>
<set name="casquilhos30">
<key column="id_modelo"/>
<one-to-many class="br.com.teste.domain.Casquilho30"/>
</set>
</class>
</hibernate-mapping>
hbm da tabela 2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.teste.domain.ClasseCamisa" table="mriclassecamisa">
<id name="modelo" column="id_modelo" type="integer">
<generator class="native"/>
</id>
<property name="classe" column="classe" type="string" not-null="false" length="1"/>
<property name="codigoDesenho" column="codigoDesenho" type="string" not-null="false" length="20"/>
<many-to-one name="modelo"
column="id_modelo" class="br.com.teste.domain.Modelo" insert="false" update="false"/>
</class>
</hibernate-mapping>
hbm da tabela 3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.teste.domain.Casquilho30" table="mricasquilho30">
<id name="modelo" column="id_modelo" type="integer">
<generator class="native"/>
</id>
<property name="combinacao" column="combinacao" type="string" not-null="false" length="2"/>
<property name="codigoCasquilho" column="codigoCasquilho" type="string" not-null="false" length="20"/>
<property name="tipoCasquilho" column="tipoCasquilho" type="string" not-null="false" length="10"/>
<many-to-one name="modelo"
column="id_modelo" class="br.com.teste.domain.Modelo" insert="false" update="false"/>
</class>
</hibernate-mapping>
bean 1
package br.com.teste.domain;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class Modelo implements Serializable{
private int id;
private String modelo;
private int serial;
private Collection casquilhos30 = new HashSet();
private Collection classesCamisa = new HashSet();
public Modelo(){
super();
}
public Collection getCasquilhos30() {
return casquilhos30;
}
public void setCasquilhos30(Collection casquilhos30) {
this.casquilhos30 = casquilhos30;
}
public Collection getClassesCamisa() {
return classesCamisa;
}
public void setClassesCamisa(Collection classesCamisa) {
this.classesCamisa = classesCamisa;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public int getSerial() {
return serial;
}
public void setSerial(int serial) {
this.serial = serial;
}
}
bean 2
package br.com.teste.domain;
import java.io.Serializable;
public class ClasseCamisa implements Serializable{
private String classe;
private String codigoDesenho;
private Modelo modelo;
public ClasseCamisa(){
super();
}
public String getClasse() {
return classe;
}
public void setClasse(String classe) {
this.classe = classe;
}
public String getCodigoDesenho() {
return codigoDesenho;
}
public void setCodigoDesenho(String codigoDesenho) {
this.codigoDesenho = codigoDesenho;
}
public Modelo getModelo() {
return modelo;
}
public void setModelo(Modelo modelo) {
this.modelo = modelo;
}
}
bean 3
package br.com.teste.domain;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
public class Casquilho30 implements Serializable{
private String combinacao;
private String codigoCasquilho;
private String tipoCasquilho;
private Modelo modelo;
public Casquilho30(){
super();
}
public String getCodigoCasquilho() {
return codigoCasquilho;
}
public void setCodigoCasquilho(String codigoCasquilho) {
this.codigoCasquilho = codigoCasquilho;
}
public String getCombinacao() {
return combinacao;
}
public void setCombinacao(String combinacao) {
this.combinacao = combinacao;
}
public Modelo getModelo() {
return modelo;
}
public void setModelo(Modelo modelo) {
this.modelo = modelo;
}
public String getTipoCasquilho() {
return tipoCasquilho;
}
public void setTipoCasquilho(String tipoCasquilho) {
this.tipoCasquilho = tipoCasquilho;
}
}
Por favor se alguem tiver uma dica ou solucao desde ja agradeco.
Alguem poderia me esclarecer se quando eu faco um List no Hibernate e existe uma associacao entre uma tabela pai e filha e dentro de meus beans eu tenho no bean principal um Set representando os dados da tabela filha , o Hibernate vai trazer esses dados e popular o Set automaticamente ou eu tenho que explicitar isto nas buscas…