Настройка гибернации для HQL
-
21-12-2019 - |
Вопрос
Я получаю следующую ошибку при самом простом запросе:
org.hibernate.hql.internal.ast.QuerySyntaxException: <table_name> is not mapped [<query_string>]
В hibernate.cfg.xml
У меня есть собственность;
<property name="current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
ThreadLocalSessionContext
находится в org.hibernate.context.internal
из Hibernate 4.x-hibernate-core-4.2.6.Final.jar
.
Все остальное в режиме гибернации работает нормально.Однако я не могу выполнить запрос.
Что я упускаю из виду?
Спасибо за помощь.
//=========================
Редактировать:
<table_name>
определяется как сущность в hibernate.cfg.xml
и все но HQL - включая обновления на <table_name>
работают без ошибок.
Решение
Есть две возможности, которые приходят мне в голову
Имя, на которое вы ссылаетесь в вашем HQL, не является Сущностью.Например, для,
HQL - это "Выбрать testEntity из TestEntity testEntity" , однако класс объектов с именем TestEntity не определен
или
Вы определили TestEntity, но им не управляют.Вы говорите, что другие операции в entity работают, похоже, вы, вероятно, используете неправильное имя в своем HQL.Однако, если вы хотите быть уверены, что объект управляется, вы можете включить ведение журнала отладки в режиме гибернации, и вы должны увидеть информацию, подобную приведенной ниже, в которой вы можете увидеть список управляемых классов.
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].
Другие советы
Ошибка в основном должна исходить от query itself
.вы должны попробовать и убедиться, что название Entity
ваш запрос, на который выполняется запрос, в точности соответствует названию class
не нравится название этого SQL table
связанный с ним.