Configurar Hibernate para HQL
-
21-12-2019 - |
Pregunta
Recibo el siguiente error en la consulta más simple:
org.hibernate.hql.internal.ast.QuerySyntaxException: <table_name> is not mapped [<query_string>]
En hibernate.cfg.xml
Tengo la propiedad;
<property name="current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
ThreadLocalSessionContext
es en org.hibernate.context.internal
de Hibernate 4.x-hibernate-core-4.2.6.Final.jar
.
Todo lo demás en Hibernate funciona bien.Sin embargo, no puedo ejecutar una consulta.
¿Qué me estoy perdiendo?
Gracias por la ayuda.
//=========================
EDITAR:
<table_name>
se define como una entidad en hibernate.cfg.xml
y todo pero HQL, incluidas las actualizaciones sobre <table_name>
están funcionando sin errores.
Solución
Hay dos posibilidades que vienen a mi mente
-
El nombre que está referente en su HQL no es una entidad.Por e.g.,
HQL es "Seleccionar testidez de la testimiedad de testentidad", sin embargo, no hay clase de entidad llamada TABERENTIDAD definida
-
Usted ha definido la testidez, pero no se gestiona.Usted dice que otra operación en la entidad está funcionando, parece que probablemente esté usando el nombre incorrecto en su HQL. Sin embargo, si desea asegurarse de que la entidad se administra, puede habilitar el registro de depuración de hibernación y debe ver información como a continuación en la que puede ver la lista de clases administradas.
01:09:40,322 DEBUG HibernatePersistenceProvider:110 - Checking persistence-unit [name=persistence-unit_test, explicit-provider=org.hibernate.ejb.HibernatePersistence] against incoming persistence unit name [persistence-unit_demo] 01:09:40,322 DEBUG ProviderChecker:106 - Persistence-unit [persistence-unit_demo] requested PersistenceProvider [org.hibernate.ejb.HibernatePersistence] 01:09:40,322 DEBUG LogHelper:117 - PersistenceUnitInfo [ name: persistence-unit_demo persistence provider classname: org.hibernate.ejb.HibernatePersistence classloader: null excludeUnlistedClasses: false JTA datasource: null Non JTA datasource: null Transaction type: RESOURCE_LOCAL PU root URL: file:/E:/Test/target/classes/ Shared Cache Mode: null Validation Mode: null Jar files URLs [] Managed classes names [ com.test.model.TestEntity Mapping files names [] Properties [ hibernate.c3p0.timeout: 100 hibernate.connection.autocommit: false hibernate.connection.driver_class: com.mysql.jdbc.Driver hibernate.c3p0.max_statements: 0 hibernate.c3p0.max_size: 50 hibernate.dialect: org.hibernate.dialect.MySQL5InnoDBDialect hibernate.c3p0.idle_test_period: 100 hibernate.c3p0.min_size: 5 hibernate.connection.username: XXXX hibernate.hbm2ddl.auto: update hibernate.c3p0.acquire_increment: 5 hibernate.connection.url: jdbc:mysql://localhost:3306/test hibernate.connection.password: XXXX hibernate.show_sql: true hibernate.connection.provider_class: org.hibernate.connection.C3P0ConnectionProvider] 01:09:40,337 DEBUG IntegratorServiceImpl:63 - Adding Integrator [org.hibernate.cfg.beanvalidation.BeanValidationIntegrator]. 01:09:40,353 DEBUG IntegratorServiceImpl:63 - Adding Integrator [org.hibernate.secure.spi.JaccIntegrator].
o
Otros consejos
El error debería provenir principalmente del query itself
.deberías intentar asegurarte de que el nombre del Entity
está ejecutando una solicitud es exactamente igual al nombre del class
no me gusta el nombre del SQL table
asociado a ello.