java - 使用 Hibernate Criteria 时,类型 List 的表达式需要未经检查的转换以符合 List<Student>

标签 java hibernate unchecked-conversion

我有这段代码给出了标题中提到的警告:

List<Student> studentList = session.createCriteria(Student.class)
    .add(Restrictions.eq("indexNumber", indexNum))
    .list();

我已阅读线程 How do I fix "The expression of type List needs unchecked conversion...'? @BrunoDeFraine 提供了一个很好的解决方案:

public static <T> List<T> castList(Class<? extends T> clazz, Collection<?> c) {
    List<T> r = new ArrayList<T>(c.size());
    for(Object o: c)
      r.add(clazz.cast(o));
    return r;
}

那么我可以这样做:

List<SyndEntry> entries = castList(SyndEntry.class, sf.getEntries());

这很好用,但在我的例子中,我将 Criteria 作为参数,而不是类和集合。 我的问题是,此方法是否可以调整为将条件作为参数,或者我应该简单地使用 @SuppressWarnings("unchecked")?

最佳答案

从评论中移出: 你想投一个 Criteria 对象?这是没有意义的。 criteria.list() 返回一个列表,因此您可以直接使用它。

无论如何,castList 方法很奇怪,您不会获得任何编译时类型安全性(如果出现问题,它仍然只会在运行时失败),并且它可能会减慢速度,特别是如果列表很长。我只会使用 @SuppressWarnings 或接受警告。

关于java - 使用 Hibernate Criteria 时,类型 List 的表达式需要未经检查的转换以符合 List<Student>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664625/

相关文章:

java - 非法监控状态异常

java - 如何优化或更改 hibernate 生成的 SQL 语句

Java : PDF page preview error, 预期外部参照

java - 使用 java POJO 和 jackson 进行 Rest api 测试

java - 我如何将用户从 GUI 给出的输入存储到字符串数组以供将来在 java 中使用

java - 如何配置 Spring Boot JPA Java 实体以自动修剪每个 CHAR 列中的字符串?

java - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Cannot add or update a child row: a foreign key constraint fails

java - 忽略警告 :unchecked conversion in java 的后果是什么

c# - 如何安全地将 long 缩小为 int?