gpt4 book ai didi

hibernate - Play 2.5, hibernate : table is not mapped

转载 作者:行者123 更新时间:2023-12-01 04:54:27 25 4
gpt4 key购买 nike

我在下面遇到异常

(异常(exception)是: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()));

但是如果这个项目是通过“actirvator start”(开发环境)运行的,这个异常就不会发生。

这意味着......只有在生产环境中我才得到这个异常(exception)。

我该如何解决。

请帮我。

感谢您的帮助,我的项目信息如下
  • 系统环境:

  • 1) Play :2.5.4

    2) hibernate :5.2.1.final
  • 异常消息:

    引起:org.hibernate.hql.internal.ast.QuerySyntaxException:用户未映射[从用户 u 中选择 u,其中 u.email = :email 和 u.secretHash = :secretHash]
    在 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)
    在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
    在 org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:115)
    在 org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:77)
    在 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)
    在 org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91)
    在 org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:79)
    在 org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(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)
    在 org.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 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
    @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;
    }
  • 最佳答案

    persistence.xml 中缺少用户映射。我无法从定义 User 的包中的片段中看到,但让我们假设它在包 persistence.models 中。 persistence.xml 应该是这样的:

    <persistence-unit name="Hoth-PersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <non-jta-data-source>DefaultDS</non-jta-data-source>
    <class>persistence.models.User</class>
    <properties>
    ...
    </properties>

    关于hibernate - Play 2.5, hibernate : table is not mapped,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38452106/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com