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?