在谈论这个问题之前,有一些背景知识:
解决问题。调用以下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.CommentCount,其中e.Id =:entityId]
如前所述,我可以改为使用Criteria,但我担心可能存在使用Criteria掩盖的潜在问题。
有什么想法吗?感谢。
答案 0 :(得分:2)
我忘了将程序集添加到我的hibernate配置中!
以下是代码:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="demo">
<mapping assembly="Users" />
</session-factory>
</hibernate-configuration>
我不确定为什么标准有效。我猜它与明确定义的类型有关。
答案 1 :(得分:0)
使用 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
子句。
答案 2 :(得分:0)
将auto-import="true"
添加到您的hibernate-mapping
元素中。这应该照顾它。