Error extraño: La clase no está asignada
Este es el error
org.hibernate.hql.ast.QuerySyntaxException: Payment is not mapped [select p from Payment p]
No entiendo por qué se lanza este error, la clase debe mapearse como le mostraré brevemente. Tengo una configuración muy básica, como esta: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/ch01.html
He intentado añadir la definición de asignación a hibernate.cfg.xml y yo también hemos intentado añadirlo mediante programación. Ninguno de ellos funcionó. ¿Alguien podría decirme qué me estoy perdiendo aquí? (no es la primera tiempo que armé un proyecto de Hibernación)
Esta es la hibernación.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>
<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/paymentsdatabase</property>
<property name="hibernate.connection.username">xxx</property>
<property name="hibernate.connection.password">xxx</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<!-- <mapping class="com.lsyh.swati.zk.model.Payment"/> -->
</session-factory>
</hibernate-configuration>
La conexión a la base de datos está funcionando bien, he probado que
Este es el inicializador estático en mi HibernateUtil
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration()
.addPackage("com.lsyh.swati.zk.model")
.addAnnotatedClass(Payment.class)
.configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed. " + ex);
throw new ExceptionInInitializerError(ex);
}
}
Y aquí es donde uso la SessionFactory en la clase PaymentIODb:
public static List<Payment> readDataFromDb(){
StatelessSession session = StoreHibernateUtil.getSessionFactory().openStatelessSession();
Query query = session.createQuery("select p from Payment p");
List<Payment> payments = query.list();
session.close();
return payments;
}
Esta es la traza de pila
org.hibernate.hql.ast.QuerySyntaxException: Payment is not mapped [select p from Payment p]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:255)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at com.lsyh.swati.zk.controller.PaymentIODb.readDataFromDb(PaymentIODb.java:35)
at com.lsyh.swati.zk.controller.PaymentIODb.resolveVariable(PaymentIODb.java:20
6 answers
Espero que una de dos cosas sea la razón:
O bien no tiene el Pago listado en su hibernat.cfg.xml o donde quiera que config de sus clases asignadas.
Otra razón podría ser la confusión entre javax...Entidad y org.hibernación....Entidad. Asegúrate de usar el primero.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-12 09:42:55
En lugar de
Query query = session.createQuery("select p from Payment p");
Prueba esto
Query query = session.createQuery("select p from " + Payment.class.getName() + " p");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-15 18:27:30
Descomente el código de asignación comentado en hibernate.cfg.archivo de configuración xml
<!-- <mapping class="com.lsyh.swati.zk.model.Payment"/> -->
change it to
<mapping class="com.lsyh.swati.zk.model.Payment"/>
Para más información consulte este enlace
Http://www.javabeat.net/tips/112-configure-mysql-database-with-hibernate-mappi.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-15 18:52:03
Su entidad bean no se está registrando, supongo. Establezca el nombre de paquete raíz adecuado de su entidad beans en la propiedad packagesToScan. También comprueba tu @Table (name = "name_of_your_table").
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-22 12:17:37
Aunque la respuesta aceptada es correcta, quisiera agregar contexto a la primera parte de la respuesta.
Dentro de su configuración.java (o como sea que haya nombrado el archivo de configuración de su aplicación en los paquetes), asegúrese de haber configurado correctamente su entityScan:
package com.example.config;
import org.springframework.boot.autoconfigure.domain.EntityScan;
@EntityScan("com.example.entities")
Sin embargo, si le gusta que nuestro equipo haya movido sus objetos a sus propios paquetes, es posible que desee permitir un análisis de todas las carpetas de paquetes:
@EntityScan("com.example.*")
Ahora que no todas las entidades están en la carpeta entidades concretamente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-01 12:17:47
Para mí, mi Clase no estaba en mi Persistencia.archivo xml en la sección clase.
Hacer eso para resolver el ish. o donde estén tus clases.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-18 16:06:31