Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2011, 19:07
Windu
 
Fecha de Ingreso: febrero-2011
Ubicación: España
Mensajes: 51
Antigüedad: 13 años, 10 meses
Puntos: 1
org.hibernate.exception.SQLGrammarException: could not execute query

Hola, aun sigo sin poder hacer mi primera query en HQL con Hibernate, no pensé que fuera tan endiabladamente complicado configurar esto... Supongo que cuando logre ejecutar la primera query todo irá sobre ruedas, pero esto ya me está superando... nunca me había costado tanto configurar un framework y dar tantas vueltas.

Bueno, éste es el hibernate.cfg.xml:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  3. <hibernate-configuration>
  4.   <session-factory>
  5.     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  6.     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  7.     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mibasededatos</property>
  8.     <property name="hibernate.connection.username">root</property>
  9.     <property name="hibernate.connection.password">12345</property>
  10.     <property name="hibernate.show_sql">true</property>
  11.     <property name="hibernate.current_session_context_class">thread</property>
  12.     <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
  13.     <mapping resource="persona.hbm.xml"/>
  14.   </session-factory>
  15. </hibernate-configuration>

Éste es el mapping del bean (no pongo el bean, todos los datos son String excepto la clave que es Long):

Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  3. <hibernate-mapping>
  4.   <class name="com.myapp.struts.ConsultarDatosUsuarioHibernate" table="persona">
  5.   <id name="id" column="id" type="java.lang.Long">
  6.     <generator class="native"/>
  7.   </id>
  8.   <property name="nombre" column="nombre" type="java.lang.String"/>
  9.   <property name="apellido1" column="apellido1" type="java.lang.String"/>
  10.   <property name="apellido2" column="apellido2" type="java.lang.String"/>
  11.   <property name="correo" column="email" type="java.lang.String"/>
  12.   <property name="usuario" column="username" type="java.lang.String"/>
  13.   <property name="telefono" column="telefono" type="java.lang.String"/>
  14.   <property name="password" column="password" type="java.lang.String"/>
  15.   <property name="rol" column="rolid" type="java.lang.String"/>
  16.   </class>
  17. </hibernate-mapping>

Esto es el fragmento de la clase donde se invoca la query (la más simple, como veis):

Código Java:
Ver original
  1. BasicConfigurator.configure();
  2.             Logger.getLogger("org.hibernate").setLevel(Level.WARN);
  3.  
  4.             Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  5.             session.beginTransaction();
  6.             Query query = session.createQuery("from persona");
  7.             List<ConsultarDatosUsuarioHibernate> result = query.list();
  8.  
  9.             session.getTransaction().commit();

Y ésta la pila de errores:

Código Apache:
Ver original
  1. org.hibernate.exception.SQLGrammarException: could not execute query
  2.         at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
  3.         at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
  4.         at org.hibernate.loader.Loader.doList(Loader.java:2223)
  5.         at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
  6.         at org.hibernate.loader.Loader.list(Loader.java:2099)
  7. Etc.

Alguna idea? Estoy por tirar el portátil por la ventana :D

Mis sospechas van por dos sitios:

1. O hay incompatibilidad de tipos entre el mapping y la tabla de MySql (no debería, son todos varchar excepto la clave que es integer)...

2. O es que aun no he efectuado ningún "insert" propiamente dicho con HQL, aunque sí lo he hecho a mano, es decir, que datos en la tabla hay, lo que quiero es sacarlos de la misma. No creo que esta opción tenga mucho sentido, ya que hablamos del modelo objeto-relacional, es decir si hay datos en la tabla debería sacarlos, me inclino más por la de arriba aunque tampoco estoy muy convencido.

Gracias como siempre!