La configuration d'Hibernate pour HQL
-
21-12-2019 - |
Question
J'obtiens l'erreur suivante à la plus simple de la requête:
org.hibernate.hql.internal.ast.QuerySyntaxException: <table_name> is not mapped [<query_string>]
Dans hibernate.cfg.xml
J'ai de la propriété;
<property name="current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
ThreadLocalSessionContext
est dans org.hibernate.context.internal
de Hibernate 4.x-hibernate-core-4.2.6.Final.jar
.
Tout le reste sur Hibernate fonctionne bien.Cependant, je ne veux pas en mesure d'exécuter une requête.
Ce qui me manque?
Merci pour l'aide.
//=========================
EDIT:
<table_name>
est défini comme une entité en hibernate.cfg.xml
et tout mais HQL-- y compris les mises à jour sur <table_name>
travaillez avec aucune erreur.
La solution
Il y a deux possibilités qui me vient à l'esprit
Le nom que vous mentionnez dans votre HQL n'est pas une Entité.Par exemple,
HQL est "Sélectionnez testEntity de TestEntity testEntity" , cependant il n'y a pas de classe d'entité nommée TestEntity défini
ou
Vous avez défini TestEntity mais il n'est pas géré.Vous dites que les autres opérations de l'entité sont de travail, on dirait que vous êtes probablement en utilisant un nom incorrect dans votre HQL.Cependant, si vous voulez être sûr que l'Entité est gérée, vous pouvez activer la veille prolongée de l'enregistrement de débogage et vous devriez voir les informations comme ci-dessous dans lequel vous pouvez voir la liste des classes gérées.
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].
Autres conseils
L'erreur doit surtout venir de la query itself
.vous devriez essayer et assurez-vous que le nom de l' Entity
votre sont de l'exécution d'une demande sur est exactement comme le nom de l' class
pas comme le nom de l' SQL table
qui y est associée.