Bueno, éste es el hibernate.cfg.xml:
Código XML:
Ver original
<?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/mibasededatos</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">12345</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.current_session_context_class">thread</property> <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property> <mapping resource="persona.hbm.xml"/> </session-factory> </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
<?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="com.myapp.struts.ConsultarDatosUsuarioHibernate" table="persona"> <id name="id" column="id" type="java.lang.Long"> <generator class="native"/> </id> <property name="nombre" column="nombre" type="java.lang.String"/> <property name="apellido1" column="apellido1" type="java.lang.String"/> <property name="apellido2" column="apellido2" type="java.lang.String"/> <property name="correo" column="email" type="java.lang.String"/> <property name="usuario" column="username" type="java.lang.String"/> <property name="telefono" column="telefono" type="java.lang.String"/> <property name="password" column="password" type="java.lang.String"/> <property name="rol" column="rolid" type="java.lang.String"/> </class> </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
BasicConfigurator.configure(); Logger.getLogger("org.hibernate").setLevel(Level.WARN); Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Query query = session.createQuery("from persona"); List<ConsultarDatosUsuarioHibernate> result = query.list(); session.getTransaction().commit();
Y ésta la pila de errores:
Código Apache:
Ver original
org.hibernate.exception.SQLGrammarException: could not execute query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2223) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) 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!