Как обернуть API сеанса Hibernate, чтобы избежать предупреждения о непроверенных дженериках

Я кодирую оболочку для Hibernate Session API:

    @SuppressWarnings("unchecked")
    public <T> List<T> execQuery(String hql){
    Session s=sf.getCurrentSession();
    return s.createQuery(hql)
                .list();
}

Функция list() API Hibernate Session использует необработанный тип. Итак, как я могу обернуть эту функцию и позволить клиенту моей оболочки безопасно использовать следующее:

  List<BusinessObject> bo= xxx.execQuery(...);

person lovespring    schedule 27.04.2014    source источник
comment
Вроде уже написал. Что именно вы спрашиваете?   -  person takteek    schedule 27.04.2014
comment
Могу ли я избежать @SuppressWarnings (не проверено)?   -  person lovespring    schedule 27.04.2014
comment
Почему бы вам не использовать стандартный JPA API, который не использует необработанные типы, как это делает API-интерфейс ole Session?   -  person JB Nizet    schedule 27.04.2014


Ответы (1)


Невозможно избежать наличия @SuppressWarnings("unchecked") хотя бы в одном месте.

Поскольку List — необработанный тип, вам придется где-то выполнить непроверенное преобразование. Лучшее, что вы можете сделать, это хранить его в одном месте, что вы и делаете с помощью execQuery.

person takteek    schedule 27.04.2014