2012-05-27 1 views
0

mon hibernate.cfg.xml est la suivante:mise en veille prolongée requête

<?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> 
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/****</property> 
<property name="hibernate.connection.username">***</property> 
<property name="hibernate.connection.password">*****</property> 

<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactor y</property> 
<property name="connection.pool_size">1</property> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="show_sql">false</property> 
<property name="hbm2ddl.auto">create</property> 
<!-- Enable Hibernate's automatic session context management --> 
    <property name="current_session_context_class">thread</property> 
<!-- JDBC connection pool (use the built-in) --> 
    <property name="connection.pool_size">1</property> 

<mapping class="entities.MisurazioneOraria"/> 
<mapping class=.... 
    ....> 
<listener type="post-insert" class="MisurazioneOrariaInsertListener"/> 

</session-factory> 

</hibernate-configuration> 

i essayer de faire la requête à partir de ce code de ligne qui est l'auditeur:

ArrayList<MisurazioneOraria> mis = (ArrayList<MisurazioneOraria>) session.createQuery("from (misurazione_oraria) where sensore_idsensore = :idsensore").setParameter("idsensore", m.getSensore().getIdSensore()).list(); 

et l'erreur est que:

mag 27, 2012 6:30:33 PM org.hibernate.event.def.AbstractFlushingEventListener performExecutions 
Grave: Could not synchronize database state with session 
org.hibernate.QueryException: in expected: misurazione_oraria [from (misurazione_oraria) where sensore_idsensore = :idsensore] 

ma version mysql est la 5.5.23. Merci pour l'aide.

+0

je vois l'espace ici « org.hibernate.hql.classic.ClassicQueryTranslatorFactor y » peut u vérifier une fois .. merci –

Répondre

1

Votre classe d'entité est nommée MisurazioneOraria, et non misurazione_oraria. HQL utilise des entités et des champs/propriétés. Il n'utilise pas les noms de table et de colonne.

Lire le HQL documentation. De plus, Query.list() retourne une liste, et pas nécessairement une liste de tableaux. Vous ne devez pas convertir le résultat de la requête en ArrayList. !

+0

maintenant cela fonctionne: D – blink89

0

changement à

List<MisurazioneOraria> mis = session.createQuery("from MisurazioneOraria where idSensore = :idsensore").setParameter("idsensore", m.getSensore().getIdSensore()).list();