Lote de primavera com alias de coluna como chave de classificação - instrução "where" malformada

Estou usando o Spring-batch versão 3.0.6.RELEASE para consultar alguns dados do MySQL DB e depois processá-los.

Detalhes sobre o uso:

provedor de consulta éMySqlPagingQueryProviderao configurar o provedor de consulta, estou especificando um alias de uma das colunas na consulta como osort key (por favor, verifique a consulta abaixo para mais detalhes)

Inquerir:

SELECT
    target.tx_timestamp AS event_datetime,
    ....
FROM
    some_table AS target
    ....
WHERE
    target.tx_timestamp > :startTime AND target.tx_timestamp <= :endTime;

O código:

Map<String, Order> sortKeys = new HashMap<>();
sortKeys.put("event_datetime", Order.ASCENDING);
MySqlPagingQueryProvider queryProvider = new MySqlPagingQueryProvider();
queryProvider.setSortKeys(sortKeys);

A consulta gerada (observe a parte comevent_datetime):

WHERE
    (target.tx_timestamp > ? AND target.tx_timestamp <= ?) AND
    ((event_datetime > ?))

O erro:

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar .... Unknown column 'event_datetime' in 'where clause'.

É possível usar o alias como a chave de classificação?

Também digno de nota sãoesta discussão com o mesmo problema eeste ingresso Jira lote da primavera que está marcado como resolvido para a versão 3.0.4.

Também tentei usar as versões 3.0.4.RELEASE, 3.0.5.RELEASE e 3.0.7.RELEASE com o mesmo resultado.

Editar: Depois de mais algumas tentativas, posso acrescentar que o problema surge apenas quando há registros suficientes para mais de uma página. A consulta para a primeira página passa sem problemas, mas as consultas para as páginas subseqüentes falham.

Edit2: Conforme apontado por Sabir, o problema está de fato com o alias da coluna na cláusula where. O lote da primavera está funcionando corretamente neste caso.

Para pessoas que enfrentam o mesmo problema: Para solucionar esse problema, aninhe toda a consulta em outra seleção como esta:

SELECT * FROM (
    SELECT
        target.tx_timestamp AS event_datetime,
        ....
    FROM
        some_table AS target
        ....
    WHERE
        target.tx_timestamp > :startTime AND target.tx_timestamp <= :endTime) our_inner_select;

Desconhecido para mim no momento em que postei a pergunta, o alias não pode ser usado na cláusula WHERE e desde que o lote da primavera recebeu o aliasevent_datetime como chave de classificação, as consultas para pedaços após o primeiro foram geradas com condições adicionais baseadas em chaves de classificação.

Com a consulta acima, a seleção interna é avaliada antes que o lote da primavera tenha adicionado a condição WHERE e, em seguida, o uso do alias da coluna para a chave de classificação seja possível.

questionAnswers(1)

yourAnswerToTheQuestion