java中hibernate查询的类名约束

java中hibernate查询的类名约束,java,mysql,postgresql,hibernate,mapping,Java,Mysql,Postgresql,Hibernate,Mapping,抱歉,如果这是一个愚蠢的问题,但我几乎一点都不懂Java。 我在postgreSQL数据库中有一个表“Orders”,我通过Hibernate访问该表,将该表映射到一个类: @Entity @Table(name = "Orders") public class Orders { ... } 这很有效。但是,如果我将类名更改为“Order”,则: 我得到一个错误: org.hibernate.hql.ast.QuerySyntaxException: Orders is not mapped

抱歉,如果这是一个愚蠢的问题,但我几乎一点都不懂Java。 我在postgreSQL数据库中有一个表“Orders”,我通过Hibernate访问该表,将该表映射到一个类:

@Entity
@Table(name = "Orders")
public class Orders { ... }
这很有效。但是,如果我将类名更改为“Order”,则:

我得到一个错误:

org.hibernate.hql.ast.QuerySyntaxException: Orders is not mapped [from Orders]
当然,我已经更新了HibernateXML配置文件,从

<mapping class="<path>.orders.Orders"/>



知道为什么吗?我错过了什么?DB表和类之间的映射只基于@table注释而不是类名,不是吗

您忽略了一个事实,即JPQL不是SQL。它适用于实体名称和属性/字段名称,而不适用于表名称和列名。由于您将实体类的名称从
Orders
更改为
Order
,因此您需要将JPQL查询从

select o from Orders o ...

实体映射的表的名称完全不相关

<mapping class="<path>.orders.Order"/>
select o from Orders o ...
select o from Order o ...