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

  • Autore discussione Autore discussione nucce
  • Data d'inizio Data d'inizio
Pubblicità

nucce

Utente Attivo
Messaggi
52
Reazioni
0
Punteggio
26
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:

PHP:
  ______________         __________
 |              |       |          |        ___________
 |   CESSIONE   |       |  LAVORO  |       |           |
 |______________|       |__________|       |  CLIENTE  |
 |              | (1,1) |          |       |___________|
 | *IdLavoro    | <---> | *Id      | (1,1) |           |
 |  Descrizione |       | Cliente  | <---> | *Id       |
 |______________|       |__________|       | Nome      |
                                           |___________|

il javabean 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?
 
Pubblicità
Pubblicità
Indietro
Top