Pessoal estou começando a estuda hibernate e surgiu um trabalhinho da faculdade pra fazer pra cadastra uma marca e um produto…uma marca tem varios produtos…montei o relaciomanento no banco de dados …consegui persisti a marca certinho no banco mais estou com dificuldades de persisti o produto está dando um erro e estou com dúvida se montei o relacionamento no hibernate correto, vou postar o erro e abaixo as classes:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Set
at org.hibernate.type.SetType.wrap(SetType.java:39)
at org.hibernate.event.def.WrapVisitor.processArrayOrNewCollection(WrapVisitor.java:84)
at org.hibernate.event.def.WrapVisitor.processCollection(WrapVisitor.java:51)
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101)
at org.hibernate.event.def.WrapVisitor.processValue(WrapVisitor.java:98)
at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55)
at org.hibernate.event.def.AbstractSaveEventListener.visitCollectionsBeforeSave(AbstractSaveEventListener.java:371)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at util.Teste.main(Teste.java:39)
<?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="to.TOMarca" table="marca">
<id name="id" column="cod" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="nomeMarca" type="string" column="nome"></property>
<property name="descricao" type="string" column="descricao"></property>
</class>
</hibernate-mapping>
<?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="to.TOProduto" table="produto">
<id name="codProduto" column="codProduto" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="nome" type="string" column="nome"></property>
<property name="custoCompra" type="double" column="custo_compra"></property>
<property name="custoVenda" type="double" column="valor_venda"></property>
<property name="descricao" type="string" column="descricao"></property>
<set name="codMarca" inverse="false">
<key column="cod_marca"></key>
<one-to-many class="to.TOMarca"/>
</set>
</class>
</hibernate-mapping>
package to;
public class TOMarca {
private int id = 0;
private String nomeMarca = null;
private String descricao = null;
public TOMarca(int id, String nomeMarca, String descricao){
this.id = id;
this.nomeMarca = nomeMarca;
this.descricao = descricao;
}
public TOMarca(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNomeMarca() {
return nomeMarca;
}
public void setNomeMarca(String nomeMarca) {
this.nomeMarca = nomeMarca;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
package to;
public class TOProduto {
private int codProduto = 0;
private String nome = null;
private String descricao = null;
private double custoCompra = 0.0;
private double custoVenda = 0.0;
private int codMarca ;
public TOProduto(int codPoduto, String nome, String descricao, double custoCompra,
double custoVenda, int codMarca) {
this.codProduto = codPoduto;
this.nome = nome;
this.descricao = descricao;
this.custoCompra = custoCompra;
this.custoVenda = custoVenda;
this.codMarca = codMarca;
}
public TOProduto(){
}
public int getCodProduto() {
return codProduto;
}
public void setCodProduto(int codProduto) {
this.codProduto = codProduto;
}
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;
}
public double getCustoCompra() {
return custoCompra;
}
public void setCustoCompra(double custoCompra) {
this.custoCompra = custoCompra;
}
public double getCustoVenda() {
return custoVenda;
}
public void setCustoVenda(double custoVenda) {
this.custoVenda = custoVenda;
}
public int getCodMarca() {
return codMarca;
}
public void setCodMarca(int codMarca) {
this.codMarca = codMarca;
}
}
package util;
import org.hibernate.Session;
import org.hibernate.Transaction;
import to.TOMarca;
import to.TOProduto;
import dao.DAOProduto;
public class Teste {
public static void main(String arg[]){
Session sessao = HibernateUtility.getSession(); //Abrindo uma sessão
Transaction transatransaction = sessao.beginTransaction(); //Iniciando uma transação
TOProduto toProduto = new TOProduto();
toProduto.setCodProduto(8);
toProduto.setCodMarca(1);
toProduto.setCustoCompra(10.0);
toProduto.setCustoVenda(20.0);
toProduto.setNome("teste Hibernate");
toProduto.setDescricao("TESTETSTET");
sessao.save(toProduto);
transatransaction.commit();
sessao.flush();
sessao.close();
}
}