я получаю исключение нижеиграть 2.5, спящий режим: таблица не отображается
(Исключение: org.hibernate.hql.internal.ast.QuerySyntaxException: Пользователь не отображается)
это происходило когда этот код вызывается.
TypedQuery<User> query = jpaApi.em().createQuery("select u from User u where u.email = :email and u.secretHash = :secretHash", User.class)
.setParameter("email", parameter.getEmail())
.setParameter("secretHash", hashAlgorithm.hash(parameter.getPassword()));
но если этот проект запущен с помощью «запуска активатора» (разработка env), это исключение не произошло.
это означает ... только на производственной среде, я получил это исключение.
как я могу это исправить.
, пожалуйста, помогите мне.
спасибо за вашу помощь и моей проектной информации ниже
- системы окружающей среды:
1) Play: 2.5.4
2) зимуют: 5.2.1.final
Сообщение об исключении:
Вызвано: org.hibernate.hql.internal.ast.QuerySyntaxException: Пользователь не отображен [выберите u из пользователя u, где u.email =: email и u.secretHash =: secretHash] at org.hibernate.hql .internal.ast.QuerySyntaxException.generateQueryException (QuerySyntaxException.java:79) на org.hibernate.QueryException.wrapWithQueryString (QueryException.java:103) в org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile (QueryTranslatorImpl.java : 218) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile (QueryTranslatorImpl.java:142) at org.hibernate.engine.query.spi.HQLQueryPlan. (HQLQueryPlan.java:115) at org. hibernate.engine.query.spi.HQLQueryPlan. (HQLQueryPlan.java:77) at org.hibernate .engine.query.spi.QueryPlanCache.getHQLQueryPlan (QueryPlanCache.java:152) на org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan (AbstractSharedSessionContract.java:521) в org.hibernate.internal.AbstractSharedSessionContract.createQuery (AbstractSharedSessionContract.java : 623) ... 52 еще Вызвано: org.hibernate.hql.internal.ast.QuerySyntaxException: Пользователь не отображается на org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister (SessionFactoryHelper.java : 171) at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement (FromElementFactory.java:91) at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement (FromClause.java:79) at org.hibernate.hql.internal.ast.HqlSqlWalker.creat eFromElement (HqlSqlWalker.java:321) на org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement (HqlSqlBaseWalker.java:3690) на org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList (HqlSqlBaseWalker.java: 3579) на org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause (HqlSqlBaseWalker.java:718) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query (HqlSqlBaseWalker.java:574) в орг. hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement (HqlSqlBaseWalker.Java: 311) на org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement (HqlSqlBaseWalker.java:259) на org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze (QueryTranslatorImpl.java:262) на org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile (QueryTranslatorImpl.java:190) ... подробнее 58
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="Hoth-PersistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <non-jta-data-source>DefaultDS</non-jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL94Dialect" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.use_sql_comments" value="true" /> <property name="hibernate.max_fetch_depth" value="5" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.jdbc.batch_size" value="50" /> <property name="hibernate.jdbc.batch_versioned_data" value="true" /> <property name="hibernate.order_inserts" value="true" /> </properties> </persistence-unit>
Entity Код класса
@Entity @Table (name = "users") @Getter @Setter @ToString @EqualsAndHashCode (of = "email") public class User { @Id private String email; @Column(name = "secret_hash") private String secretHash; @Column(name = "accessed_at") private LocalDateTime accessedAt; private String gender; @Column(name = "birth_year") private Integer birthYear; @Column(name = "picture_name") private String pictureName; @Column(name = "picture_url") private String pictureUrl; private String nickname; }
этот запрос вызывается в классе UserDao и этот класс называют UserController. Транзакционная аннотация, помещенная в UserController, как это «@Transactional public class UserController extends Controller» –
Я использую этот пакет import play.db.jpa.JPA; а не jpaApi, и я делаю такие запросы, как JPA.em(). createQuery («выберите u из User u, где u.email =: email и u.secretHash =: secretHash», User.class) .setParameter («email», parameter.getEmail()) .setParameter ("secretHash", hashAlgorithm.hash (параметр.getPassword())); и другое, что я уже сказал вам, - попробовать добавить свойство entity в persistence.xml com.yourCompanyName.WhateverEntityClass –