java - Hibernate查询异常: Unable to locate class

标签 java hibernate

在 hbm.xml 中,经过增强后,我有 2 个 ABC 类的映射条目,两者都映射到表 ABC_TABLE

<class entity-name="ABC" name="model.ABC" table="ABC_TABLE">
<!-- property tags and id tag -->
</class>

<class entity-name="LazyABC" name="model.ABC" table="ABC_TABLE">
<!-- property tags and id tag -->
</class>

增强之前,hbm.xml 仅具有 ABC 类的entity-name="ABC"映射。

经过这样的增强后, 原始HQL查询代码

select new ABC(a.abcId, a.abcContent, a.abcEnding) from ABC a where....

执行时抛出异常。

异常(exception)是

org.springframework.orm.hibernate3.HibernateQueryException: Unable to locate class [ABC]

引起

org.hibernate.hql.ast.QuerySyntaxException: Unable to locate class [ABC] 

然后我在网上找到了解决方案,只需将 ABC 构造函数名称更改为类的完整路径,例如

select new model.ABC(a.abcId, a.abcContent, a.abcEnding) from ABC a where....

然后问题就解决了,执行查询时没有抛出异常!

但是,我只是不知道为什么 hibernate 处理是这样的。

有人可以告诉我它成为解决方案的根本原因吗?

谢谢。 :)

最佳答案

首先,如果您需要基于对象的结果。使用Criteria API。

您可能拥有 ABC 类的有效导入。但是HQL不知道类的包名,因为它是String。因此,您应该提供包括包名称的完整路径。

关于java - Hibernate查询异常: Unable to locate class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583921/

相关文章:

java - 从 git 存储库中的 m2e-wtp 中删除长路径

java - 静态字段的 JUnit 初始化

java - 在 Java 中选择 ArrayList 中最后 25% 的对象

java - 如何在数据库触发器创建 id 时禁用生成器

java - 什么时候可以/应该全力使用 ORM 方法?

java - 无法使用 CXF/MTOM 接收所有文档

Java:使用泛型指定类型的单个子类型

mysql - 使用 Hibernate 在 MySQL 中保留记录会删除以前的记录

java - BigDecimal 类型列的默认值的 JPA 注释

java - org.hibernate.MappingException : Could not determine type for: at table: for columns: [org. hibernate.mapping.Column(植物)