我是Hibernate的新手,并且正在编写一个简单的方法来返回与特定html" target="_blank">过滤器匹配的对象列表。List<Foo>
似乎是自然的回报类型。
不管我做什么,除非雇用了ugly,否则我似乎都无法使编译器满意@SuppressWarnings
。
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
public class Foo {
public Session acquireSession() {
// All DB opening, connection etc. removed,
// since the problem is in compilation, not at runtime.
return null;
}
@SuppressWarnings("unchecked") /* <----- */
public List<Foo> activeObjects() {
Session s = acquireSession();
Query q = s.createQuery("from foo where active");
return (List<Foo>) q.list();
}
}
我想摆脱它SuppressWarnings
。但是如果我这样做,我会得到警告
Warning: Unchecked cast from List to List<Foo>
(我可以忽略它,但是我不想一开始就得到它),如果我删除泛型以符合.list()
返回类型,则会收到警告
Warning: List is a raw type. References to generic type List<E>
should be parameterized.
我注意到org.hibernate.mapping
确实 声明了List
;但它是完全不同的类型- Query
返回a
java.util.List
作为原始类型。我发现最近的Hibernate(4.0.x)无法实现参数化类型很奇怪,因此我怀疑是我自己在做错事情。
它看起来非常像将Hibernate结果转换为对象列表,但是在这里我没有“硬”错误(系统知道类型为Foo,并且我没有使用SQLQuery,而是使用了直接查询)。所以没有喜悦。
我也看过Hibernate Class CastException,因为它看起来很有希望,但是后来我意识到我实际上并 没有 得到任何信息Exception
……我的问题只是一个警告问题-
如果可以的话,是一种编码样式。
关于jboss.org的文档,Hibernate手册和一些教程似乎没有 如此
详细地涵盖该主题(或者我没有在正确的位置搜索?)。当他们进入细节时,他们会使用即时转换-
以及不在jboss.org官方网站上的教程中使用的转换,因此我有点警惕。
代码一旦编译,就不会 出现明显的 问题……我知道……。结果是预期的。
所以:我这样做对吗?我是否缺少明显的东西?有“正式”或“推荐”的 方式 吗?
简短的答案@SuppressWarnings
是正确的方法。
长答案,Hibernate
List
从该Query.list
方法返回一个原始值,请参见此处。这不是Hibernate的错误,也不是可以解决的问题,查询返回的类型在编译时
未知 。
因此,当你写
final List<MyObject> list = query.list();
您正在执行从List
到的不安全转换List<MyObject>
-无法避免。
您可能无法安全地执行转换,因为其中List
可能 包含任何内容。
使错误消失的唯一方法是更丑陋
final List<MyObject> list = new LinkedList<>();
for(final Object o : query.list()) {
list.add((MyObject)o);
}
问题内容: 我是Hibernate的新手,并且正在编写一个简单的方法来返回与特定过滤器匹配的对象列表。似乎是自然的回报类型。 不管我做什么,除非聘用了丑陋的人,否则似乎都无法使编译器满意。 我想摆脱它。但是如果我这样做,我会得到警告 (我可以忽略它,但是我不想一开始就得到它),如果我删除泛型以符合返回类型,则会收到警告 我注意到 确实 声明了;但这是完全不同的类型- 返回a 作为原始类型。我发现最
在这个答复中, zwol提出了这样的主张: 将两个字节的数据从外部源转换为16位有符号整数的正确方法是使用以下帮助函数: 上述哪个函数是合适的取决于数组是否包含小端或大端表示。Endianness不是这里的问题,我想知道为什么zwol从转换为的值中减去。 为什么这是正确的方法? 转换为返回类型时如何避免实现定义的行为? 既然可以假设2的补码表示,那么这个更简单的强制转换将如何失败:
问题内容: 如果我想将的结果(即对象)与需要字典或类映射对象的方法一起使用(请参见collections.Mapping),那么正确的方法是什么? “进入”对象并使用其属性是否合适? 我认为答案是否定的:闻起来像执行公约,而不是一个接口,方式或或似乎是。 问题答案: 您可以使用 vars() 访问名称空间的字典: 您可以根据需要直接修改字典: 是的,可以访问__dict__属性。这是定义明确,经过
我正在开发一个包含一个活动和多个片段的android应用程序。我的应用程序包含导航抽屉。它的布局包含listview。单击它的项目,我用ft.replace(R.id.my\u placehodler,new MyFragment())动态更改片段,并将事务添加到。当我每次实例化新片段时都进行新事务。在我看来,这不是一个好办法。你能给我一些关于进行片段事务的正确方法的建议吗?
我是Hibernate的新手,我正在编写一个简单的方法来返回与特定过滤器匹配的对象列表<代码>列表 无论我做什么,我似乎都不能让编译器满意,除非我使用一个丑陋的。 我想摆脱那种。但如果我这么做了,我会得到警告 (我可以忽略它,但我不想首先得到它),如果我删除泛型以符合返回类型,我会得到警告 我注意到,确实声明了一个;但它是一种完全不同的类型——返回一个。我觉得奇怪的是,最近的Hibernate(4
本文向大家介绍C#将DataTable转换成list的方法,包括了C#将DataTable转换成list的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#将DataTable转换成list及数据分页的方法。分享给大家供大家参考。具体如下: 将一个DataTable转换成一个List 首先定义一个接收DataTable字段列的类 。类的字段与DataTable的列字段一致 希望本文所