Konfigurieren des Ruhezustands für HQL
-
21-12-2019 - |
Frage
Ich erhalte den folgenden Fehler bei der einfachsten Abfrage:
org.hibernate.hql.internal.ast.QuerySyntaxException: <table_name> is not mapped [<query_string>]
In hibernate.cfg.xml
Ich habe das Eigentum;
<property name="current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
ThreadLocalSessionContext
ist in org.hibernate.context.internal
von Hibernate 4.x-hibernate-core-4.2.6.Final.jar
.
Alles andere im Ruhezustand funktioniert einwandfrei.Jedoch, ich kann keine Abfrage ausführen.
Was verpasse ich?
Danke für die Hilfe.
//=========================
BEARBEITEN:
<table_name>
ist definiert als eine Entität in hibernate.cfg.xml
und alles aber HQL - einschließlich der Updates auf <table_name>
arbeiten ohne Fehler.
Lösung
Es gibt zwei Möglichkeiten, die mir in den Sinn kommen
Der Name, auf den Sie in Ihrem HQL verweisen, ist keine Entität.Für z.B.,
HQL ist "Select TestEntity from TestEntity TestEntity", es ist jedoch keine Entitätsklasse mit dem Namen TestEntity definiert
oder
Sie haben TestEntity definiert, aber es wird nicht verwaltet.Sie sagen, dass andere Operationen in der Entität funktionieren, es sieht so aus, als würden Sie wahrscheinlich einen falschen Namen in Ihrem HQL verwenden.Wenn Sie jedoch sichergehen möchten, dass die Entität verwaltet wird, können Sie die Hibernate-Debug-Protokollierung aktivieren und Sie sollten Informationen wie unten sehen, in denen Sie die Liste der verwalteten Klassen sehen können.
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].
Andere Tipps
Der Fehler sollte hauptsächlich von der kommen query itself
.sie sollten versuchen, sicherzustellen, dass der Name der Entity
sie führen eine Anfrage aus, die genau wie der Name der class
nicht wie der Name des SQL table
damit verbunden.