在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处理就是这样。
有人可以告诉我解决问题的根本原因吗?
感谢。 :)
答案 0 :(得分:1)
首先,如果您需要基于对象的结果。使用Criteria
API。
您可能拥有ABC
课程的有效导入。但是HQL
不知道类的包名称,因为它是String 。所以你应该提供完整的路径,包括包名。