例如,我有这样的查询:
Query q = sess.createQuery("from Cat cat");
List cats = q.list();
如果我尝试这样做,它会显示以下警告
Type safety: The expression of type List needs unchecked conversion to conform to List<Cat>
List<Cat> cats = q.list();
有没有办法避免它呢?
发布于 2015-05-16 04:24:00
这个问题已经提出很长一段时间了,但我希望我的答案能对像我这样的人有所帮助。
如果您查看一下javax.persistence api docs,您将看到自Java Persistence 2.0
以来已经在其中添加了一些新方法。其中之一是返回TypedQuery<T>
的createQuery(String, Class<T>)
。您可以像使用Query
一样使用TypedQuery
,但稍有不同的是,现在所有操作都是类型安全的。
因此,只需将您的代码更改为smth,如下所示:
Query q = sess.createQuery("from Cat cat", Cat.class);
List<Cat> cats = q.list();
你已经准备好了。
发布于 2008-09-22 16:55:19
我们也使用@SuppressWarnings("unchecked")
,但我们通常只在变量的声明上使用它,而不是在整个方法上使用它:
public List<Cat> findAll() {
Query q = sess.createQuery("from Cat cat");
@SuppressWarnings("unchecked")
List<Cat> cats = q.list();
return cats;
}
发布于 2016-04-05 19:02:14
尝试使用TypedQuery
而不是Query
。例如,不是这样:-
Query q = sess.createQuery("from Cat cat", Cat.class);
List<Cat> cats = q.list();
使用这个:-
TypedQuery<Cat> q1 = sess.createQuery("from Cat cat", Cat.class);
List<Cat> cats = q1.list();
https://stackoverflow.com/questions/115692
复制相似问题