gpt4 book ai didi

nhibernate - "?"附近的语法不正确 : Nhibernate Generated Query

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

我在 Nhbernate 中使用位置参数时遇到问题。

Criteria GroupProperty 发出带有命名变量和位置变量的 sql。

这个声明:

session.CreateCriteria(typeof(MatchStageFrom))
.SetProjection(Projections.GroupProperty(
Projections.SqlFunction("substring", NHibernateUtil.String, Projections.Property("LastName"), Projections.Constant(0), Projections.Constant(1))
)
);

正在生成此 SQL:

SELECT substring(this_.LAST_NAME, @p0, @p1) as y0_ FROM MATCH_STAGING_FROM this_ GROUP BY substring(this_.LAST_NAME, ?, ?)

这会导致 SQL 出错:

Incorrect syntax near '?'.

could not execute query
[ SELECT substring(this_.LAST_NAME, @p0, @p1) as y0_ FROM MATCH_STAGING_FROM this_ GROUP BY substring(this_.LAST_NAME, ?, ?) ]
Positional parameters: #0>0 #1>1 #2>0 #3>1
[SQL: SELECT substring(this_.LAST_NAME, @p0, @p1) as y0_ FROM MATCH_STAGING_FROM this_ GROUP BY substring(this_.LAST_NAME, ?, ?)]

我能做些什么来修复它?

最佳答案

它看起来像是 NHibernate 中的错误,但如果您只想要这些结果,您可以通过使用 Projections.Distinct 而不是 Projections.GroupProperty 获得相同的结果,即:

session.CreateCriteria(typeof(MatchStageFrom))
.SetProjection(Projections.Distinct(
Projections.SqlFunction("substring", NHibernateUtil.String,
Projections.Property("LastName"),
Projections.Constant(0),
Projections.Constant(1))
)
);

或者,如果您选择的不仅仅是名称的第一个字符,那么您可能可以使用子选择让它工作

关于nhibernate - "?"附近的语法不正确 : Nhibernate Generated Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10696539/

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