Как снова использовать объект Критериев с, в спящем режиме?

Я сделал некоторые исправления для решения @Pinhassi. Он обрабатывает некоторые случаи:

1. вы можете перемещать курсор в любом месте

2.minus sign handling

3.digitsbefore = 2 и digitsafter = 4, и вы вводите 12,4545. Затем, если вы хотите удалить «.», Это не позволит.

public class DecimalDigitsInputFilter implements InputFilter {
    private int mDigitsBeforeZero;
    private int mDigitsAfterZero;
    private Pattern mPattern;

    private static final int DIGITS_BEFORE_ZERO_DEFAULT = 100;
    private static final int DIGITS_AFTER_ZERO_DEFAULT = 100;

    public DecimalDigitsInputFilter(Integer digitsBeforeZero, Integer digitsAfterZero) {
    this.mDigitsBeforeZero = (digitsBeforeZero != null ? digitsBeforeZero : DIGITS_BEFORE_ZERO_DEFAULT);
    this.mDigitsAfterZero = (digitsAfterZero != null ? digitsAfterZero : DIGITS_AFTER_ZERO_DEFAULT);
    mPattern = Pattern.compile("-?[0-9]{0," + (mDigitsBeforeZero) + "}+((\\.[0-9]{0," + (mDigitsAfterZero)
        + "})?)||(\\.)?");
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
    String replacement = source.subSequence(start, end).toString();
    String newVal = dest.subSequence(0, dstart).toString() + replacement
        + dest.subSequence(dend, dest.length()).toString();
    Matcher matcher = mPattern.matcher(newVal);
    if (matcher.matches())
        return null;

    if (TextUtils.isEmpty(source))
        return dest.subSequence(dstart, dend);
    else
        return "";
    }
}
27
задан agnul 16 December 2008 в 13:54
поделиться

6 ответов

хорошо, DetachedCriteria являются сериализуемыми, таким образом, Вы имеете встроенный (если неэлегантный), глубоко клонируют поддержку. Вы могли сериализировать начальные критерии к байту [] однажды на конструкции, затем десериализовать ее каждый раз, когда Вы хотите использовать ее.

2
ответ дан james 14 October 2019 в 13:48
поделиться

http://weblogs.asp.net/stefansedich/archive/2008/10/03/paging-with-nhibernate-using-a-custom-extension-method-to-make-it-easier.aspx

В том сообщении я определил метод CriteriaTransformer.clone.

, Который должен скопировать объект критериев.

можно также установить проекцию на getlist методе.

Ой я не заметил, что Вы обращались к Java, в спящем режиме. Так или иначе этот http://forum.hibernate.org/viewtopic.php?t=939039

сообщение форума должно быть в состоянии ответить на Ваш вопрос.

2
ответ дан Min 14 October 2019 в 13:48
поделиться

Ужасный, как это может быть, я закончил тем, что использовал прием сериализации. Я просто сериализирую эти DetachedCriteria объект к массиву байтов на конструкции эти PaginatedList объект и десериализовываю его при необходимости. Ай.

1
ответ дан agnul 14 October 2019 в 13:48
поделиться

Еще одна вещь, которую стоит попробовать:

реализовать универсальный DAO, такой как , предложенный на сайте hibernate , и передать его объекту PaginatedList вместе с объектом Restrictions. Затем объект PaginatedList будет делать что-то вроде

Criteria.forClass(myDAO.getPersistentClass())
        .add(myRestrictions)
        .addOrder(<someOrder>)

и

Criteria.forClass(myDAO.getPersistentClass())
        .add(myRestrictions)
        .setProjection(Projections.rowCount());

. Пока не пробовал, но он должен работать.

0
ответ дан 28 November 2019 в 05:05
поделиться
Criteria.setProjection(null);
Criteria.setResultTransformer(Criteria.ROOT_ENTITY);

Будет эффективно "сбрасывать" критерии между проекцией rowCount и выполнением самого критерия.

Я бы удостоверился, что ваш Ордер не был добавлен перед выполнением rowCount, он будет замедлить работу. Моя реализация PaginatedList ВСЕГДА запускает запрос подсчета перед поиском результатов, поэтому упорядочение не является проблемой.

48
ответ дан 28 November 2019 в 05:05
поделиться
public static DetachedCriteria Clone(this DetachedCriteria criteria)
{
   var dummy = criteria.ToByteArray();
   return dummy.FromByteArray<DetachedCriteria>();
}
-1
ответ дан 28 November 2019 в 05:05
поделиться
Другие вопросы по тегам:

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