首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何避免Hibernate HQL结果的类型安全警告?

如何避免Hibernate HQL结果的类型安全警告?
EN

Stack Overflow用户
提问于 2008-09-22 15:53:27
回答 12查看 70.9K关注 0票数 108

例如,我有这样的查询:

代码语言:javascript
复制
Query q = sess.createQuery("from Cat cat");
List cats = q.list();

如果我尝试这样做,它会显示以下警告

代码语言:javascript
复制
Type safety: The expression of type List needs unchecked conversion to conform to List<Cat>


List<Cat> cats = q.list();

有没有办法避免它呢?

EN

回答 12

Stack Overflow用户

发布于 2015-05-16 04:24:00

这个问题已经提出很长一段时间了,但我希望我的答案能对像我这样的人有所帮助。

如果您查看一下javax.persistence api docs,您将看到自Java Persistence 2.0以来已经在其中添加了一些新方法。其中之一是返回TypedQuery<T>createQuery(String, Class<T>)。您可以像使用Query一样使用TypedQuery,但稍有不同的是,现在所有操作都是类型安全的。

因此,只需将您的代码更改为smth,如下所示:

代码语言:javascript
复制
Query q = sess.createQuery("from Cat cat", Cat.class);
List<Cat> cats = q.list();

你已经准备好了。

票数 43
EN

Stack Overflow用户

发布于 2008-09-22 16:55:19

我们也使用@SuppressWarnings("unchecked"),但我们通常只在变量的声明上使用它,而不是在整个方法上使用它:

代码语言:javascript
复制
public List<Cat> findAll() {
    Query q = sess.createQuery("from Cat cat");
    @SuppressWarnings("unchecked")
    List<Cat> cats = q.list();
    return cats;
}
票数 21
EN

Stack Overflow用户

发布于 2016-04-05 19:02:14

尝试使用TypedQuery而不是Query。例如,不是这样:-

代码语言:javascript
复制
Query q = sess.createQuery("from Cat cat", Cat.class);
List<Cat> cats = q.list();

使用这个:-

代码语言:javascript
复制
TypedQuery<Cat> q1 = sess.createQuery("from Cat cat", Cat.class);
List<Cat> cats = q1.list();
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/115692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档