【问题标题】:Hibernate: Entity is not mapped休眠:实体未映射
【发布时间】:2020-12-18 23:20:46
【问题描述】:

我正在使用 spring boot 和 Native Query,这是我的查询

 List<Employee> pageData = em.createQuery(" select max(case when UPPER(property_name)='FIRST_NAME' then value end) as firstName,max(case when UPPER(property_name)='LAST_NAME' then value end) as lastName from employee e join employeedetails ed on e.id = cd.empdetail_id ORDER BY "+ orderedBy , Employee.class)
            .setFirstResult(10*page).setMaxResults(size).getResultList();
    

在哪里orderedBy = firstName ASC

Employee 类看起来像

public interface Employee{
  @JsonProperty(value = "firstName")
  String getFirstName();

  @JsonProperty(value = "LastName")
  String getLastName();

  // and so on
  }

但我遇到了异常employee is not mapped

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: employee is not mapped [my query] 

有根本原因

org.hibernate.hql.internal.ast.QuerySyntaxException: employee is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:169) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:79) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3695) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3584) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:720) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:576) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:313) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:261) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:271) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:191) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:143) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:119) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]

【问题讨论】:

标签: java sql spring spring-boot spring-data


【解决方案1】:

在您的查询中有:

select ... from employee ...

要执行此查询,必须存在一个名为“employee”的实体。错误消息意味着没有这样的实体。

你能做什么?

  1. 检查是否有一个名为“Employee”并用@Entity 注释的类。你展示的是一个接口,而不是一个类。 Hibernate 会忽略它。
  2. 检查是否存在具有任何名称并带有 @Entity(name = "employee") 注释的类。

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2016-10-18
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多