SOCORRO_hibernate

3 respostas
L

ai galera olha eu denovo com dificuldade no hibernate , gostaria que alguem desse uma olhada nas minhas classes e
nos meus mapeamentos pois tenho duvidas nesta parte de 1…n,n…n, n…1
e na questao de declarar os sets nas classes esta certinho esses meus arquivos.java?
pois eu tenho um sistema que estou desenvolvendo neste mesmo padrao e esta dando um erro de duplicacao de campo no relacionamento
se alguem puder ajudar fico mto grato.

cliente.java

package model;
 
public class Cliente {
	private int codigo;
	private String nome;
	private Pedido pedido; 
	
	public Cliente(){	 
	 }
	
 public Pedido getpedido() {
		return pedido;
	}
	public void setpedido(Pedido pedido) {
		this.pedido = pedido;
	}

public void setCodigo(int codigo)
{
	this.codigo = codigo;
}
public void setNome(String nome)
{
	this.nome = nome;
}
public  int getCodigo()
{
	return this.codigo;
}
public String getNome()
{
	return this.nome;
}
}




Pedido.java

package model;
import java.util.Collections;
public class Pedido {
	private int codigoPedido;
	private int codigoCliente;
	private Double total;
	private Collections Cliente;
	
	public Pedido(){}
	public int getcodigoPedido() {
		return codigoPedido;
	}
	public void setCodigoProduto(int codigoPedido) {
		this.codigoPedido = codigoPedido;
	}
	public int getCodigoCliente() {
		return codigoCliente;
	}
	public void setCodigoCliente(int codigoCliente) {
		this.codigoCliente = codigoCliente;
	}
	public Double getTotal() {
		return total;
	}
	public void setTotal(Double total) {
		this.total = total;
	}
	public Collections getCliente() {
		return Cliente;
	}
	public void setCliente(Collections cliente) {
		Cliente = cliente;
	}
}





cliente.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="model.Cliente" table="cliente">    
            <id name="codigo"></id>    
             <property name="nome"/>                  
            <set name="Pedido">  
 <key column="codigo"/>  
 <one-to-many class="model.Pedido"/>  
 </set>      
        </class>    
    </hibernate-mapping>  



Pedido.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="model.Pedido" table="pedido">    
            <id name="codigoPedido"></id>              
             <property name="total"/>                 
              <many-to-one name="codigoCliente"
              class="model.cliente"/> 
        </class>    
    </hibernate-mapping>
    
    
    

sessao.java


package model;
import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.cfg.Configuration; 
public class Sessao {	     
	   public class OpenSessao{      
	       private static SessionFactory factory;  
	       public OpenSessao(){  
	   try {  
	   factory = new Configuration().configure().buildSessionFactory();  
	  } catch (Exception e) {  
	   e.printStackTrace();  
	   factory = null;  
	   }  
	   }  
	   public static Session getSession() {  
	   return factory.openSession();  
	   }  
	   }  

}




inserir.jsp


 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
     pageEncoding="ISO-8859-1"%>  
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
   
 <%@page import="org.hibernate.Session"%>  
 <%@page import="org.hibernate.*"%>  
 <%@page import="model.OpenSessao" %>  
 <html>  
 <head>  
 <meta http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">  
 <jsp:useBean id="c" class="model.Cliente" />  
 <jsp:useBean id="cc" class="model.Pedido" />  
 <title>Insert title here</title>  
 </head>  
 <body>  
 <%     
   Sessao op = new Sessao();  
 Session sessao = Sessao.getSession();  
 Transaction transaction = sessao.beginTransaction();  
     c.setCodigo(1);  
     c.setNome("teste");      
     cc.setCodigoCliente(1);  
     cc.setCodigoProduto(c.getCodigo());
     cc.setTotal(2.00);
     out.println(c.getNome());   
     sessao.save(c);   
     sessao.save(cc);  
     transaction.commit();  
     sessao.close();   
 %>  
 </body>  
 </html>

3 Respostas

rodrigoallemand

Nem li seu código todo ainda… mas já tenho uma duvida…

Como é a cardinalidade entre clientes e pedidos?!? Pela sua classe, parece que um cliente só tem um pedido e um pedido tem vários clientes, é verdade? Isso não está invertido não?!?
E no seu mapeamento isso parece estar invertido, caso a classe esteja correta…

E a sua duvida é somente na cardinalidade do relacionamento?!? Porque me parece que vc tem mais duvidas em como montar suas classes, ou isso é apenas um exemplo?!?

L

Isto é apenas um exemplo que fiz aqui correndo pra vc se conseguia ajuda
na verdade um pedido tem um cliente e um cliente tem varios pedidos
se vc puder me ajudar montar esse mapeamentos ficarei mto grato pois dai vou utilizar os conceitos em um sistema que estou desenvolvendo na facul.
valew brigadao t+

L

Ha eu tbm to com duvida em como se faz o set nas classes, como funciona isso?

Criado 14 de novembro de 2007
Ultima resposta 14 de nov. de 2007
Respostas 3
Participantes 2