У меня есть следующий код Hibernate:
List<Book> result;
result = hibernateTemplate.execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("SELECT DISTINCT b FROM Book as b LEFT JOIN FETCH b.authors");
List list = query.list();
return list;
}
});
Я получаю следующие предупреждения, начиная с hibernateTemplate.execute(...
:
Multiple markers at this line
- HibernateCallback is a raw type. References to generic type HibernateCallback<T> should be parameterized
- Type safety: The expression of type new HibernateCallback(){} needs unchecked conversion to conform to HibernateCallback<Object>
- Type safety: Unchecked invocation execute(new HibernateCallback(){}) of the generic method execute(HibernateCallback<T>) of type
HibernateTemplate
- Type safety: The expression of type new HibernateCallback(){} needs unchecked conversion to conform to HibernateCallback<List<Book>>
- Type safety: The expression of type List needs unchecked conversion to conform to List<Book>
Так что это действительно сложно.
Не могли бы вы объяснить
Что видит компилятор в сравнении с тем, что он ожидает, и почему?
Какой самый безопасный способ исправить эти предупреждения ... т.е. не с помощью @SuppressWarnings("unchecked")
?
Я попробовал предложение, появившееся по следующей ссылке:
https://forums.oracle.com/forums/thread.jspa?threadID=1182661
(второе предложение из трех, появившихся внизу страницы) .... однако оно не сработало.
Спасибо!
P.S. Я знаю, как решить другое предупреждение, которое я должен получить из-за List list = query.list();
, поэтому я не упоминаю его в своем вопросе.
P.S-2 Согласно Eclipse, сигнатура метода: <Object> Object org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateCallback<Object> action) throws DataAccessException