当前位置: 首页 > 面试题库 >

使用Hibernate Query.list()避免类型安全警告

沈伟
2023-03-14
问题内容

使用createQuery()。list之后是否可以避免投射警告?

//Type safety: The expression of type List needs unchecked conversion to conform to List<User>
List<User> user = (List<User>) session.createQuery("select u from User u").list();

我希望找到一种通过通用参数或方法参数指定目标对象的方法,如下所示:

List<User> user = session.createQuery("select u from User u").list(User.class);

问题答案:

要记住的最重要的一点是, 警告是由于编译器引起的,而不是hibernate的
-您可以告诉编译器忽略未实现的泛型。通过使用HQL,我们以一种类型安全的方式查询数据,不幸的是,java无法进行验证。

有很多方法可以避开hibernate转换的句法丑陋,例如:

1)在投放或使用@suppressWarnings的地方

2)使用Collections.checkedList方法创建新列表。



 类似资料:
  • 问题内容: 例如我有这样的查询: 如果我尝试做这样的事情,它将显示以下警告 有办法避免吗? 问题答案: 如建议的那样,在任何地方使用都是一种不错的方法,尽管每次调用都会涉及一些手指输入。 我建议使用其他两种技术: 写一个演员助手 只需将所有内容重构到一个位置即可: 防止Eclipse为不可避免的问题生成警告 在Eclipse中,转到“窗口”>“首选项”>“ Java”>“编译器”>“错误/警告”,

  • 我一直在思考jvm安全的工作方式。原则是,jvm始终信任并运行任何本地代码。因此,从概念上讲,如果您的代码没有显式或隐式调用<code>checkpermission(permission)</code>,这意味着它永远不会失败任何安全验证。当然,所有这些验证调用通常都是在JavaAPI类中完成的,因此我们不需要为内置权限调用它们。 现在,只要您使用内置类(如<code>FileOutputStr

  • 问题内容: 有没有一种方法可以避免类型擦除并获得对类型参数的访问? 我需要了解并使用它来做事。是否可以,如果可以,如何在 不 将类传入构造函数或参数之外的任何地方的 情况下 完成操作? 编辑: 这个问题的主要目的是找出是否有 任何实用的方法 来消除类型擦除。 问题答案: 实际上, 没有 类型擦除的实用方法,因为您不能要求运行时无法访问的内容。当然,假设您同意为实现接口的每个枚举子类化通用类是一个实

  • 问题内容: 我有一些数据存储在Java元素中,我需要以给定的格式JSONObject返回它。虽然我的实现工作正常,但是我仍然从eclipse收到警告消息(版本:Juno Service Release 2): “ 类型安全性:put(Object,Object)方法属于原始类型HashMap。对通用类型HashMap的引用应参数化 ” 这是我的代码: 有问题的行是: 除了添加之外,还有其他方法可以

  • 问题内容: 我在Go中使用类型开关,例如以下代码: 有没有一种方法可以防止在将问题传递给另一个函数之前必须断言案件中的问题类型? 问题答案: 是的,分配类型切换的结果将为您提供断言的类型 http://play.golang.org/p/qy0TPhypvp

  • 让我们看一下使用两种不同的方式去计算单词的个数,第一种方式使用 reduceByKey 另外一种方式使用 groupByKey: val words = Array("one", "two", "two", "three", "three", "three") val wordPairsRDD = sc.parallelize(words).map(word => (word, 1)) val