0
我試圖當其會員總數TournamentXP
= 0來更新Guild.League
:具有複雜內查詢HQL更新查詢
using (var session = sessionFactory.OpenStatelessSession())
using (var tx = session.BeginTransaction())
{
const int maxLeagues = 6;
session.CreateQuery(
@"update Guild g set g.League = g.League + 1 where g.League < " + maxLeagues + @"
AND g.Id in (
select GuildId from (
select GuildId, SUM(u.TournamentXP) AS s from User u where GuildId != 0 group by u.GuildId) r
where r.s = 0)
").ExecuteUpdate();
tx.Commit();
}
查詢拋出「Antlr.Runtime.NoViableAltException」近線3,列48的查詢。
原來PostgreSQL的查詢(運行正常)看起來像:
update guilds set league = league + 1 where league <= 5
AND id in (
select guild_id from (
select guild_id, SUM(u.tournament_xp) AS s from users u where guild_id != 0 group by u.guild_id) r
where r.s = 0)
如何使它在HQL工作?
此外,如果您可以提出任何優化的查詢,我會很高興聽到它。
是啊,這作品!你可以給出任何關於如何使用FROM子查詢轉換查詢以加入HQL支持的任何建議,以防不適合? – Vlad