2016-01-11 2 views
1

Я использовал ниже код в hibernate stuts2 java.Как добавить общий тип?

String hql = "from PostDetails"; 
    Query postDetails = session.createQuery(hql); // Got warning from here 
    List<PostDetails> result = postDetails.list(); 

Предупреждение является: Type safety: The expression of type List needs unchecked conversion to conform to List<PostDetails>

Если бы я использовал эту аннотацию @SuppressWarnings ("непроверенные"), то предупреждение будет решена. Но я не хочу ни одной аннотации.

Как установить это предупреждение?

+0

Я не верю, что вы можете. Это один из тех случаев, когда да, дженерики будут более безопасными, но Hibernate не вернет «Список», который недействителен в этом контексте. – Makoto

+2

Более новый, стандартный JPA API имеет типизированные запросы, которые позволяют избежать этих предупреждений. Подумайте о том, чтобы использовать его вместо старого, проприетарного, Hibernate API. Обратите внимание, что это не очень безопасно для типов, поскольку ничто не мешает вам выполнять 'em.createQuery (« выберите s из School s », Student.class)» и вернуть «Список », который фактически содержит экземпляры школы , –

+0

@JBNizet: Это почти достаточно, чтобы быть ответом. Позаботьтесь сделать это? – Makoto

ответ

0

Я не верю, что вы можете. Даже documentation and examples для Hibernate используют исходный тип List, а не типичный. Однако, очень маловероятно что вы столкнетесь с ошибкой с этим списком; Hibernate не вернет список, который недействителен в этом контексте.

Новейшая стандартная версия JPA API имеет typed queries, что позволит избежать этих предупреждений и позволит вам вернуть правильно напечатанный список.

Это означало бы, вы могли бы выполнить это, чтобы получить список, который вы хотите:

List<Student> = em.createQuery("select s from School s", Student.class).getResultList(); 
Смежные вопросы