Spring - получить поле из списка в модели - PullRequest
0 голосов
/ 05 июля 2018

Я создаю проект с помощью Spring + Hibernate, и у меня есть небольшая проблема: У меня есть сущность Hop и сущность Country. Когда я добавляю новую форму перехода - есть form:select - выбор для этого списка из БД - это форма:

<tr>
  <td><label>Origin:</label></td>
  <td>
    <form:select path="hopOrigin">
      <form:option value="" label="...." />
      <form:options items="${countryList}"/>
    </form:select>
  </td>
</tr>

Чтобы заполнить этот список, у меня есть этот класс в HopController:

@ModelAttribute("countryList")
    public List<Country> getCountry()   {

        List<Country> countriesNames = countryService.getCoutriesNames();

        return countriesNames;
    }

В конце концов, сервис страны - @Autowired до CountryDaoImpl, и есть метод:

@Override
    public List<Country> getCoutriesNames() {

        Session currentSession = sessionFactory.getCurrentSession();

        Query<Country> theQuery = currentSession.createQuery("SELECT countryName FROM Country");

        List<Country> countriesNames = theQuery.getResultList();

        return countriesNames;
    }

Таким образом, в и в этом выпадающем списке я получаю только countryName, а не весь Country объект. Этот подход требует создания методов в HopControler, CountryService, CountryServiceImp, CountryDao и CountryDaoImp - только для получения одного поля.

Мой вопрос: есть ли какой-нибудь более простой способ (возможно, на странице JSP), чтобы получить только countryName для этого выпадающего списка?

1 Ответ

0 голосов
/ 06 июля 2018

Да, я чувствую вашу боль, но, к сожалению, это рекомендуемый способ ее реализации.

Конечно, вы всегда можете создать новый метод в Дао, чтобы вернуть List<String>, но зачем? В будущем вам может понадобиться другое свойство, например, идентификатор страны или код земли (us, es, fr и т. Д.) На ваш выбор.

Конечно, вы всегда можете сделать методы короче, как в примере:

@Override
    public List<Country> getCoutriesNames() {

        return sessionFactory.getCurrentSession().createQuery("SELECT countryName FROM Country").getResultList();

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...