Список результатов Hibernate Query и тип безопасности? - PullRequest
1 голос
/ 08 февраля 2012

Это приводит к непроверенному предупреждению:

public List<Person> list()
{
  return sessionFactory.getCurrentSession().createQuery( "FROM Person" ).list();
}

Уже пробовал, но безуспешно:

public List<Person> list()
{
  Query query = sessionFactory.getCurrentSession().createQuery( "FROM Person" );
  return Collections.checkedList( query.list(), Person.class );
}

Я НЕ хочу добавлять

@SuppressWarnings( "unchecked" )

, потому что этоне смог бы это исправить ...

Итак, как обеспечить безопасность типов?

1 Ответ

2 голосов
/ 08 февраля 2012

В каком-то месте должно произойти преобразование из нетипизированного списка в типизированный список. Это преобразование unsafe. Collections.checkedList позволит вам переместить аннотацию, но не более; не очень полезно здесь. Аннотация не «решает» проблему в техническом смысле, она просто говорит компилятору, что вы знаете, что делаете. Поскольку интерфейс Query не возвращает типизированные результаты (по уважительной причине), нет никакого способа обойти ни предупреждение, ни аннотацию SuppressWarnings.

Вы должны установить аннотацию и написать содержательный комментарий, почему она оправдана (то есть, потому что тип определяется запросом HQL, но интерфейс возвращает нетипизированный список).

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