hibernate returning BigDecimal datatype instead of long

Когда Вы используете + = или - =, когда делегат вводит, который просто звонит к Delegate.Combine и Delegate.Remove.

важная вещь о многоадресных делегатах состоит в том, что возвращаемое значение все кроме последнего выполняемого делегата проигнорированы. Они все выполняются (если исключение не выдается), но только последнее возвращаемое значение используется.

Для предикатов, Вы могли бы хотеть сделать что-то как:

public static Func<T, bool> And<T>(params Func<T, bool>[] predicates)
{
    return t => predicates.All(predicate => predicate(t));
}

public static Func<T, bool> Or<T>(params Func<T, bool>[] predicates)
{
    return t => predicates.Any(predicate => predicate(t));
}

Вы затем сделали бы:

Func<string, bool> predicate = And<string>(
    t => t.Length > 10,
    t => t.Length < 20);

РЕДАКТИРОВАНИЕ: вот более общее решение, которое довольно забавно, если немного причудливый...

public static Func<TInput, TOuput> Combine<TInput, TOutput>
    (Func<TOutput, TOutput, TOutput> aggregator,
     params Func<TInput, TOuput>[] delegates) {

    // delegates[0] provides the initial value
    return t => delegates.Skip(1).Aggregate(delegates[0](t), aggregator);
}

, Таким образом, Вы могли затем реализация И как:

public static Func<T, bool> And<T>(params Func<T, bool>[] predicates) {
    return Combine<T, bool>((x, y) => x && y, predicates);
}

(я лично предпочитаю это по использованию GetInvocationList(), потому что Вы заканчиваете с предикатом, который можно передать другим битам LINQ и т.д.)

7
задан Victor 21 March 2011 в 15:54
поделиться

1 ответ

У меня была та же проблема. Это устраняет проблему аккуратно и возвращает Список Длинных

List<Long> orgTypeIds = session.createSQLQuery("SELECT typeId FROM org_type_cd")
                               .addScalar("typeId", StandardBasicTypes.LONG)
                               .list();

касательно: https://matthewbusche.com/2016/06/08/hibernate-returning-bigdecimal-instead-of-long /

0
ответ дан 6 December 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: