Hibernate查询结果列表和类型安全?

时间:2012-02-07 22:35:43

标签: java hibernate type-safety

这导致未经检查的警告:

public List<Person> list()
{
  return sessionFactory.getCurrentSession().createQuery( "FROM Person" ).list();
}

已经尝试过但没有成功:

public List<Person> list()
{
  Query query = sessionFactory.getCurrentSession().createQuery( "FROM Person" );
  return Collections.checkedList( query.list(), Person.class );
}

我不想添加

@SuppressWarnings( "unchecked" )

因为它无法修复它......

那么,如何确保类型安全?

1 个答案:

答案 0 :(得分:2)

在某个地方,必须发生从无类型列表到打字列表的转换。此转化为unsafeCollections.checkedList允许您移动注释但不能更多;这里不是很有帮助。注释不是从技术意义上“解决”问题,它只是告诉编译器你知道你做了什么。由于Query接口不返回类型化结果(有充分理由),因此无法使用警告或SuppressWarnings注释。

您应该设置注释并写一个有意义的注释,为什么它是合理的(即因为类型由HQL查询确定,但接口返回一个无类型列表)。