0

我已经看到这个机会至少被报告了六次,而且回复的数量也差不多。

我的问题是,我已经定义了一个 MySQL 数据库函数,我们将其称为“my_func(int val) 返回 int”,如果我直接在数据库上进行测试,它就可以正常工作。

我还让它通过我的存储库实现直接使用 SQL 传递,这没关系,但我宁愿通过 Hql 路由它,出于某种可怕的原因......

所以......我有一个 MySQL5Dialect 设置来注册函数,我在解析预期的约定时遇到了一些困难。

我的理解是我需要在函数名前加上“dbo”。在功能注册期间的某个时候?

像这样的东西,

//...
RegisterFunction("my_func", new SQLFunctionTemplate(NHibernateUtil.Int32, "my_func(?1)"));
//...

然后通过我的存储库,

var value = repository.FindByHQL<int>("select my_func(2)").Single();

FindByHQL 返回 IList。

任何想法为什么这不起作用。

我正在运行最新的 WAMP(我认为是 2.1e)。

足够的信息?让我知道我是否可以提供任何进一步的细节。

谢谢,

迈克尔

4

1 回答 1

0
select my_func(2)

不是有效的 HQL,无论函数是否注册。

如果这是您的用例,您可以改用 SQL。

如果不是,则使用堆栈跟踪发布完整的异常,这只是一个简化的示例。

于 2011-03-16T00:17:03.913 回答