如何从Java中返回通用List中删除'Type Safety'/'Unchecked conversion'警告?

时间:2013-08-21 14:34:28

标签: java spring hibernate warnings hibernate-annotations

我在Java中使用Hibernate在我的数据访问对象中执行以下操作:

public List<Device> getDevices() {
    return getCurrentSession().createQuery("from Device").list();
}

这给了我以下警告:

Type safety: The expression of type List needs unchecked conversion to conform to     List<Device>

为了删除我正在使用的警告

@SuppressWarnings("unchecked")

但我正在寻找一种更好的方法来删除此警告,理想情况下处理来自数据库的“设备”以外的其他内容。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

Java没有具体化的泛型,所以遗憾的是你无法摆脱注释:( 如果您在SO上搜索此内容,最常推荐的解决方案之一是使用Collections.checkedList,这可能会对您有所帮助

答案 1 :(得分:1)

由于您在问题中添加了spring标记,我假设您已经在使用Spring。在这种情况下,使用SpringData和JPA而不是Hibernate特定的东西会容易得多。否则你无法真正摆脱警告,因为你无法改变api。

答案 2 :(得分:0)

hibernate会话对象不会返回类型化的Query。您可以使用EntityManager(hibernate支持),它允许您在createQuery()上指定类型。