使用HQL时出现“实体未映射”异常。与标准
这里谈论这个问题之前作品的一些背景:使用HQL时出现“实体未映射”异常。与标准
- 有3个组件。
- 一个包含实体类和问题HQL。
- 测试。
- 网站。
- 测试程序集中的所有测试都通过了HQL。
- 网站引发异常。
- 如果我使用等效的Criteria代码,它可以在所有调用它的程序集中正常工作。
解决问题。当调用以下HQL
var commentCount =
session.CreateQuery("select e.CommentCount from Entity e where e.Id = :entityId")
.SetParameter("entityId", string.Format("{0}:{1}", entityType, entityId))
.UniqueResult<int>();
此抛出异常:
实体没有被映射[从实体e其中e.Id =选择e.CommentCount:ENTITYID]
如所提到的我可以更改为使用Criteria,但我担心可能存在使用Criteria掩盖的潜在问题。
任何想法?谢谢。
我忘了将程序集添加到我的hibernate配置中!
下面的代码:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="demo">
<mapping assembly="Users" />
</session-factory>
</hibernate-configuration>
我不知道为什么标准工作。我猜测它与被明确定义的类型有关。
使用C#自己 as string
:
var commentCount = session.CreateQuery("select e.CommentCount from Entity e where e.Id = :entityId and rownum <= 1")
.SetParameter("entityId", string.Format("{0}:{1}", entityType, entityId))
.UniqueResult() as string;
待办事项,你可能需要在末尾添加and rownum <= 1
条款。
我不确定你的意思,我应该把“作为字符串”? “where e.Id =:entityId as string”和rownum Castrohenge 2010-09-10 12:38:19
@Kieranmaine在我的修改中,请注意UniqueResult
在没有您的改变的情况下工作。我认为不添加组件是更大的问题。谢谢您的帮助。 – Castrohenge 2010-09-10 14:11:18
将auto-import="true"
添加到您的hibernate-mapping
元素。这应该照顾它。
谢谢。我明天在工作上给了那个尝试。 – Castrohenge 2010-09-12 22:16:10
这似乎不适用于我。 – Castrohenge 2010-09-14 12:07:17
你试过我的推荐吗?这对我来说总是有效的,我从我目前的生产代码中得到了它。 – rebelliard 2010-09-10 13:49:36
Criteria返回未映射实体的空结果。这意味着它不工作,它只是没有投掷。 – 2010-09-14 12:45:28
很高兴知道。我会在将来寻找这个。 – Castrohenge 2010-09-27 16:00:45