Как уже упоминал Аффе, это именно то, что и ожидалось. Projection.sum на самом деле является так называемой агрегированной проекцией, то есть она будет выполнять агрегирование (например, group by в SQL) для всех возвращаемых записей. Следовательно, Projection.sum в вашем примере вычисляет сумму поля amount во всех возвращенных записях (то есть всех записях, которые соответствуют вашим критериям). Даже если ни одна запись не соответствует вашим критериям, при суммировании будет вычислена сумма, которая, конечно, будет равна «0», поскольку суммировать нечего. Поэтому проекция всегда будет возвращать запись, а также всегда только одну запись, несмотря на количество записей, соответствующих вашим критериям.