gpt4 book ai didi

java - HQL查询中的 hibernate 表未映射错误

转载 作者:IT老高 更新时间:2023-10-28 13:02:27 24 4
gpt4 key购买 nike

我有一个使用 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 不支持 * 表示法。

关于java - HQL查询中的 hibernate 表未映射错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446048/

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