0

QueryOver を使用して次の SQL クエリを実装しようとしています。

SELECT [Time]/1000
FROM TableName
GROUP BY [Time]/1000

これが私の現在の試みです:

var result = session
    .QueryOver<TableName>
    .Select(Projections.GroupProperty(
        Projections.SqlFunction(
            new VarArgsSQLFunction("(", "/", ")"),
            NHibernateUtil.Int64,
            Projections.Property("Time")
            Projections.Constant(1000))
    ))
    .List<object>();

残念ながら、次の例外 (GenericADOException) が発生します。

could execute query
[ SELECT (this_.Time/@p0) as y0_ FROM [TableName] this_ GROUP BY (this_.Time/?) ]

そして内部の例外:

Incorrect syntax near ?.

「GroupProperty」を「Sum」に置き換えることができ、機能します。何が欠けているか分かりますか?


更新: どうやらそれは NHibernate のバグです。この質問も参照してください。

4

1 に答える 1

1

Projections.SqlGroupProjectionを使用してみませんか:

var result = session
    .QueryOver<TableName>
    .Select(Projections.SqlGroupProjection(
                        Time/1000 AS TimeValue", 
                        "Time/1000", 
                        new[]{"TimeValue"}, 
                        new[]{NHibernateUtil.Int32}))
    .List<object>();
于 2012-10-17T08:42:26.643 に答える