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:
il javabeans per la tabella Lavoro:Codice PHP:
______________ __________
| | | | ___________
| CESSIONE | | LAVORO | | |
|______________| |__________| | CLIENTE |
| | (1,1) | | |___________|
| *IdLavoro | <---> | *Id | (1,1) | |
| Descrizione | | Cliente | <---> | *Id |
|______________| |__________| | Nome |
|___________|
Il bean cessione: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; } }
Infine il bean cliente: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; } }
Mentre i file xml per il mapping sono: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; } }
Lavoro:
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.Lavoro" table="lavoro"> <id name="id" column="id"> <generator class="identity"/> </id> <one-to-one name="cliente" class="beans.Cliente"/> </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.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>
L'errore che mi esce, invece, è il seguente: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>
Non riesco a capire dove è l'errore!!!...c'è per caso qualche errore nei beans?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)

Rispondi quotando