Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] [Hibernate] - Errore di casting?!!!

    salve a tutti...sto usando Hibernate (versione 3.2) per un progetto, sto cercando di mappare il database ma ho un paio di problemi...le tabelle che stò cercando di mappare sono le seguenti:


    Codice PHP:

       ______________         __________
     
    |              |       |          |        ___________
     
    |   CESSIONE   |       |  LAVORO  |       |           |
     |
    ______________|       |__________|       |  CLIENTE  |
     |              | (
    1,1) |          |       |___________|
     | *
    IdLavoro    | <---> | *Id      | (1,1) |           |
     |  
    Descrizione |       | Cliente  | <---> | *Id       |
     |
    ______________|       |__________|       | Nome      |
                                               |
    ___________
    il javabeans per la tabella Lavoro:
    codice:
    package beans;
    
    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    
    public class Lavoro {
    	private int id;
    	private Date data;
    	private Set cliente = new HashSet();
    	public Lavoro(){
    		super();
    	}
    	//Metodi getter
    	public int getId(){
    		return id;
    	}
    	public Date getData(){
    		return data;
    	}
    	public Set getCliente(){
    		return cliente;
    	}
    	//Metodi setter
    	public void setId(int id){
    		this.id = id;
    	}
    	public void setData(Date data){
    		this.data = data;
    	}
    	public void setCliente(Set cliente){
    		this.cliente = cliente;
    	}
    }
    Il bean cessione:
    codice:
    package beans;
    
    public class Cessione extends Lavoro{
    	private int idLavoro;
    	private String descrizione;
    	
    	public Cessione(){
    		super();
    	}
    	//Metodi getter
    	public int getIdLavoro(){
    		return super.getId();
    	}
    	
    	public String getDescrizione(){
    		return descrizione;
    	}
    	//Metodi setter
    	public void setIdLavoro(int idLavoro){
    		super.setId(idLavoro);
    	}
    	public void setDescrizione(String descrizione){
    		this.descrizione = descrizione;
    	}
    }
    Infine il bean cliente:
    codice:
    package beans;
    
    public class Cliente {
    	
    	private int id;
    	private String nome;
    	
    	public Cliente(){
    		super();
    	}
    	
    	//Metodi getter
    	public int getId(){
    		return id;
    	}
    	
    	public String getNome(){
    		return nome;
    	}
    	//Metodi setter
    	public void setId(int id){
    		this.id = id;
    	}
    	
    	public void setNome(String nome){
    		this.nome = nome;
    	}
    }
    Mentre i file xml per il mapping sono:

    Lavoro:
    codice:
    <?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="beans.Lavoro" table="lavoro">
    		<id name="id" column="id">
    			<generator class="identity"/>
    		</id>
    		
    		<one-to-one name="cliente" class="beans.Cliente"/>
    	</class>
    </hibernate-mapping>
    cessione:
    codice:
    <?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="beans.Cessione" table="cessione">
    		<id name="idLavoro" column="idLavoro">
    			<generator class="foreign">
    				<param name="property">idLavoro</param>
    			</generator>
    		</id>
    		
    		<one-to-one name="idLavoro" class="beans.Lavoro" foreign-key="id" constrained="true"/>
    		
    		<property name="descrizione"/>
    	</class>
    
    </hibernate-mapping>
    Cliente:
    codice:
    <?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="beans.Cliente" table="cliente">
    		<id name="id" column="id">
    			<generator class="identity"/>
    		</id>
    		
    		<property name="nome"/>
    	</class>
    	
    </hibernate-mapping>
    L'errore che mi esce, invece, è il seguente:
    codice:
    java.lang.ClassCastException: org.hibernate.type.IntegerType cannot be cast to org.hibernate.type.EntityType
    	org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:50)
    	org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
    	org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
    	org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
    	org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    	org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
    	org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
    	org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
    	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	java.lang.reflect.Method.invoke(Unknown Source)
    	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
    	$Proxy0.save(Unknown Source)
    	test.CessioneTest.doGet(CessioneTest.java:58)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Non riesco a capire dove è l'errore!!!...c'è per caso qualche errore nei beans?
    Guitar Pub, il sito dedicato al mondo della chitarra e dei chitarristi.

    Il mio Spazio

  2. #2
    posta il codice della classe CessioneTest
    Al mio segnale... scatenate l'inferno!

  3. #3
    prova a definire nell'xml di mapping della tabella lavoro type="integer

    <id name="id" type="integer" column="id">

  4. #4
    Originariamente inviato da jdk
    prova a definire nell'xml di mapping della tabella lavoro type="integer

    <id name="id" type="integer" column="id">
    non funziona...mi da lo stesso errore!!!!

    il codice della calsse CessioneTest:
    codice:
    package test;
    
    import java.io.IOException;
    import java.util.HashSet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.RequestDispatcher;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    import beans.Cessione;
    import beans.Cliente;
    
    public class CessioneTest extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet
    {
    
    	  public CessioneTest()
    	  {
    	    super();
    	  }
    	
    	  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	  {
    		    
    		  // Recupero la sessione
    		  org.hibernate.Session session = 
    			  new Configuration().configure().buildSessionFactory().getCurrentSession();
    		    
    		  //Creo un nuovo documento di Cessione
    		  Cessione c = new Cessione();
    		  c.setAssegno(false);
    		  c.setCliente(new HashSet());
    		  c.getCliente().add(cl);
    		  c.setCodFis("dncpla19l85a794z");
    		  c.setContanti(true);
    		  c.setPagato(true);
    		  c.setPrezzo((float)32.45);
    		 
    		  session.beginTransaction();
    		    
    		  //Chiedo al middleware di salvare questo oggetto nel database
    		  session.save(c);
    		    
    		  //fine della transazione: salvo tramite commit()
    		  session.getTransaction().commit();
    		  
    		  RequestDispatcher dispatcher;
    		  dispatcher = getServletContext().getRequestDispatcher("/ShowUser.jsp");
    		  dispatcher.forward(request,response);
    		  
    	  }
    	  
    	  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	  {
    	    this.doGet(request, response);
    	  }
    }
    Guitar Pub, il sito dedicato al mondo della chitarra e dei chitarristi.

    Il mio Spazio

  5. #5
    up
    Guitar Pub, il sito dedicato al mondo della chitarra e dei chitarristi.

    Il mio Spazio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.