HibernateQueryException:无法找到类

时间:2016-06-02 06:09:12

标签: java hibernate

在hbm.xml中,经过增强后,我有两个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只有entity-name =&#34; ABC&#34; ABC类的映射。

经过这样的提升, 原始的HQL查询代码

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

执行时抛出异常。

例外是

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处理就是这样。

有人可以告诉我解决问题的根本原因吗?

感谢。 :)

1 个答案:

答案 0 :(得分:1)

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

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