NHibernate нетерпеливая выборка по нескольким уровням

Первый импорт NumberFormat. Затем добавьте это:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

Это даст вам два десятичных знака и пометит знак доллара, если он имеет дело с валютой.

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;

    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }

}
19
задан Ben Laan 7 January 2009 в 22:03
поделиться

4 ответа

Вы добираетесь 4XOrder и 4XLines, потому что соединение со строками удваивает результаты. Можно установить Преобразователь на ICriteria как:

.SetResultTransformer(new DistinctRootEntityResultTransformer())
21
ответ дан 30 November 2019 в 04:21
поделиться

Я просто читал Сообщение в блоге Ayende , где он использовал следующий Пример:

session.CreateCriteria(typeof(Post))
    .SetFetchMode("Comments", FetchMode.Eager)
    .List();

В Запросе Критериев для предотвращения Ленивой Загрузки на одном конкретном Запросе

, Возможно, который может помочь Вам.

5
ответ дан 30 November 2019 в 04:21
поделиться

@Tigraine: Ваш запрос только возвращает Сообщение с Комментариями. Это приносит Все сообщения со всеми Комментариями (2 уровня). Что Ben, спрашивающий, является Клиентом, чтобы Заказать LineItem (3 уровня). @Ben: к моему знанию nHibernate еще не поддерживает нетерпеливую загрузку до 3 уровней. Будьте в спящем режиме действительно поддерживает его Вы.

0
ответ дан 30 November 2019 в 04:21
поделиться

У меня была такая же проблема. См. Эту ветку . Я получил не решение, а подсказку от Фабио. Используйте Set вместо сумки. И это сработало.

Итак, я предлагаю попробовать использовать set. Вам не обязательно использовать коллекцию Iesi, используйте IDictonary и NH is happy

public override IEnumerable<Baseline> GetAll()
{
     var baselines = Session.CreateQuery(@" from Baseline b
                                            left join fetch b.BaselineMilestones bm
                                            left join fetch bm.BaselineMilestonePrevious ")
                                            .SetResultTransformer(Transformers.DistinctRootEntity)
                                            .List<Baseline>();
     return baselines;
}
0
ответ дан 30 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

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