当前位置: 首页 > 面试题库 >

HQL查询中出现Hibernate表未映射错误

公孙宸
2023-03-14
问题内容

我有一个使用Hibernate在数据库上进行CRUD操作的Web应用程序。我收到一条错误消息,说该表未映射。查看Java文件:

错误信息:

org.springframework.orm.hibernate3.HibernateQueryException: Books is not mapped [SELECT COUNT(*) FROM Books]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Books is not mapped [SELECT COUNT(*) FROM Books]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:660)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
...
Caused by: org.hibernate.hql.ast.QuerySyntaxException: Books is not mapped [SELECT COUNT(*) FROM Books]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:111)
at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93)
...

这是我的DAO.java方法:

public int getTotalBooks(){
    return DataAccessUtils.intResult(hibernateTemplate.find(
          "SELECT COUNT(*) FROM Books"));
}

Book.java:

@Entity
@Table(name="Books")
public class Book {

    @Id
    @GeneratedValue
    @Column(name="id")
    private int id;

    @Column(name="title", nullable=false)
    private String title;
    ...
}

我应该如何修改才能正常工作?


问题答案:

异常消息怎么说?它说:

Books is not mapped [SELECT COUNT(*) FROM Books]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Books is not mapped [SELECT COUNT(*) FROM Books]

这告诉你什么?它告诉你Books未映射。也就是说,没有称为的映射类型Books

确实,没有。你的映射类型称为Book。它映射到名为的表Books,但类型称为Book。在编写HQL(或JPQL)查询时,你使用类型的名称,而不是表。

因此,将查询更改为:

select count(*) from Book

虽然我认为可能需要

select count(b) from Book b

如果HQL不支持该*表示法。



 类似资料:
  • 问题内容: 我有一个使用Hibernate在数据库上进行CRUD操作的Web应用程序。我收到一条错误消息,说该表未映射。查看Java文件: 错误信息: 这是我的方法: : 我应该如何修改才能正常工作? 问题答案: 异常消息怎么说?它说: 这告诉你什么?它告诉您未映射。也就是说,没有称为的映射类型。 确实,没有。您的映射类型称为。它映射到名为的表,但类型称为。在编写HQL(或JPQL)查询时,您使用

  • 嗨,伙计们,我试图检索数据从我的数据库使用HQL编辑器查询。我遵循了示例“在JavaSwing应用程序中使用Hibernate”中的步骤。我的配置文件如下: 映射: 使用这个:或我得到以下错误: org.hibernate.exception.SQLGrammarExcture:无法在org.hibernate.exception.SQLStateConverter.convert(SQLStat

  • 我有一个产品数据库。我已经创建了一个简单的Hibernate项目来从数据库中检索所有的产品。但是,我在编译代码时出现了以下异常: 令人惊讶的是,将prodcuts添加到数据库中可以正常工作。

  • 我想执行以下sql查询 如何使用hibernate 3.0为此编写hql查询 我是这样写的 但它显示了hql语法错误

  • 1. 前言 本节课程和大家一起学习 Hibernate 中的 HQL ( Hibernate 查询语言)。通过本节课程的学习,你将了解到: HQL 基础语法; HQL 查询的具体实现。- 2. HQL 查询?前面不是讲过?用过吗? 但是,前面的查询都是简单查询,真实项目中的查询需求要远比这个复杂。仅仅依靠 get()、load() 是远远达不到要求。 Hibernate 提供了灵活多样的查询机制,