Nhibernate - Загрузка сущности с помощью коллекции HasMany в веб-приложении - PullRequest
2 голосов
/ 03 мая 2009

Во-первых, любой, кто пытается попасть на forum.hibernate.org. Я пытался некоторое время. Не могу поверить в это.

Я новичок в NHibernate. Иди спокойно.

У меня есть приложение MVC, и у меня есть объект под названием Рецепт и у него есть коллекции HasMany Комментарии, ингредиенты и изображения.

В действии контроллера MVC я загружаю первый 20 рецептов для загрузки на мою домашнюю страницу.

Я использую следующий HQL для этого. Я хочу предварительно выбрать изображения, чтобы я мог отобразить первый. Но мой первый рецепт имеет 3 изображения, поэтому в результате запроса в 3 строки загружены один рецепт.

     string sql = "from Recipe r " +
            "left join fetch r.Images " +
            "inner join fetch r.User " + 
            "where r.Completed!=0";
        IList<Recipe> recipes = (IList<Recipe>)session.CreateQuery(sql)
            .SetMaxResults(20)
            .List<Recipe>();

Какой метод я использую для загрузки первых 20 рецептов с загруженными изображениями ??? Я СТРЕСС хочу предварительно загружать изображения, а не «Ленивая загрузка», это потому, что список загружается в действии контроллера, поэтому изображения не могут быть загружены при перечислении их в моем пользовательском элементе управления.

Malcolm

1 Ответ

1 голос
/ 03 мая 2009

Попробуйте это:

string sql = "from Recipe r " +
       "left join fetch r.Images " +
       "inner join fetch r.User " + 
       "where r.Completed!=0";

var recipes = session
    .CreateQuery(sql)
    .SetResultTransformer(CriteriaUtil.DistinctRootEntity)
    .SetMaxResults(20)
    .List<Recipe>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...