gpt4 book ai didi

NHibernate:NHibernate.Criterion.SqlFunctionProjection 没有持久化

转载 作者:行者123 更新时间:2023-12-03 12:28:02 24 4
gpt4 key购买 nike

我正在使用 NHibernate 版本 2.0.0.4000。

在我的一个查询中,我想使用 sql 函数 dateadd 来添加天数。这没有注册,所以我创建了自己的方言并注册了如下函数:

RegisterFunction("adddays", 
new SQLFunctionTemplate(NHibernateUtil.DateTime,
"dateadd(dd, ?1, ?2)"));

注册被击中,似乎工作正常。我在 DetachedCriteria 查询中使用该函数,如下所示:
...
Restrictions.LtProperty("DateColumn1"
Projections.SqlFunction("adddays", NHibernateUtil.DateTime,
Projections.Constant(days),
Projections.Property("DateColumn2"))
...

条件从一个方法返回并传递给另一个查询。在执行最终查询时,我收到以下异常:
NHibernate.MappingException was caught
Message="No persister for: NHibernate.Criterion.SqlFunctionProjection"
Source="NHibernate"
StackTrace:
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName,
Boolean throwIfNotFound)
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName)
...

我看过的博客文章都没有提到这个问题。有人可以帮忙吗?

提前加油。
尼日。

最佳答案

解决了。

问题是由我在其他地方使用 Restrictions.Eq 引起的而不是 Restrictions.EqProperty .前者没有 (IProjection,IProjection) 的过载因此将第二个投影视为对象并将其传递给持久器。

感谢任何调查此事的人。
奈杰尔。

关于NHibernate:NHibernate.Criterion.SqlFunctionProjection 没有持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/969408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com