2

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

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")

但我正在寻找一种更好的方法来删除此警告,并理想地处理从数据库返回的“设备”以外的内容。

有任何想法吗?

4

3 回答 3

3

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

于 2013-08-21T14:38:30.243 回答
1

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

于 2013-08-21T14:37:29.273 回答
0

休眠会话对象不会返回类型化查询。您可以改用 EntityManager(hibernate 支持),它允许您在 createQuery() 上指定类型。

于 2013-08-21T18:11:51.563 回答