Ciao..sto scrivendo la mia prima applicazione web usando java-hibernate e struts2...sono arrivato ad un problema che non riesco a capire. In sintesi ho creato il database su mysql composto da 6 tabelle ed a un certo punto dell'applicazione ho bisogno di recuperare tutti i record di una tabella specifica mediante una query con hibernate.
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="Sirio">
<property name="hibernate.connection.driver_class">com.mysql .jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc//localhost:3306/utente1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="sirio/hibernate/dbobject/Studente.hbm.xml"/>
<mapping resource="sirio/hibernate/dbobject/Voto.hbm.xml"/>
<mapping resource="sirio/hibernate/dbobject/Materia.hbm.xml"/>
</session-factory>
</hibernate-configuration>
LA TABELLA IN QUESTIONE è LA TABELLA 'MATERIA'
<?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="sirio.hibernate.dbobject.Materia" table="MATERIA">
<id name="idMateria" type="int">
<column name="IDMATERIA" />
<generator class="assigned" />
</id>
<property name="nomeMateria" type="java.lang.String">
<column name="NOMEMATERIA" />
</property>
</class>
</hibernate-mapping>
E QUESTO è IL CODICE jAVA CHE ESTRAE I DATI CHE VOGLIO
public static List getListaMaterie(){
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
String hql = "FROM " + Materia.nome_tavola;
Query query = session.createQuery(hql);
List lista = query.list();
session.close();
sessionFactory.close();
return lista;
}
public static void main(String[]args){
System.out.println(getListaMaterie().size());
}
}
Adesso non so se ho fatto qualche errore con gli oggetti di hibernate, ma la stessa query con un'altra tabella funziona...comunque se parto con quel main di prova non solo mi dice che la lista oggetti è vuota(i record in tabella sono 9) ma mi cancella i record di quella tabella!!! E inoltre elimina anche le chiavi esterne con le altre tabelle madri!! Non so proprio che pensare..stessa cosa se uso Oracle..anzi peggio..lo fà con tutte le tabelle!! Accetto consigli per latri modi di creare query a questo punto! Grazie.