我正在使用JPQL本机查询来联接表,查询结果存储在中List<Object[]>
。
public String getJoinJpqlNativeQuery() {
String final SQL_JOIN =
"SELECT v1.bitbit, v1.numnum, v1.someTime, t1.username,
t1.anotherNum FROM MasatosanTest t1
JOIN MasatoView v1 ON v1.username = t1.username;"
System.out.println("get join jpql native query is being called
============================");
EntityManager em = null;
List<Object[]> out = null;
try {
em = EmProvider.getDefaultManager();
Query query = em.createNativeQuery(SQL_JOIN);
out = query.getResultList();
System.out.println("return object ==========>" + out);
System.out.println(out.get(0));
String one = out.get(0).toString(); //LINE 77 where ClassCastException
System.out.println(one);
}
catch(Exception e) {
}
finally {
if(em != null) { em.close; }
}
}
问题是
System.out.println("return object ==========>" + out);
输出:
return object ==========>
[[true, 0, 2010-12-21 15:32:53.0, masatosan, 0.020],
[false, 0, 2010-12-21 15:32:53.0, koga, 0.213]]
System.out.println(out.get(0))
输出:
[true, 0, 2010-12-21 15:32:53.0, masatosan, 0.020]
所以我假设我可以分配out.get(0)的返回值,该值应该是String:
String one = out.get(0).toString();
但是我得到了奇怪的ClassCastException。
java.lang.ClassCastException: java.util.Vector cannot be cast to
[Ljava.lang.Object;
at local.test.jaxrs.MasatosanTestResource.getJoinJpqlNativeQuery
(MasatosanTestResource.java:77)
那么到底是怎么回事?甚至Object[] foo = out.get(0);
会抛出ClassCastException :(
我对JPQL本机查询不熟悉,但是您只需使用以下命令进行调试:
对象o = out.get(0); System.out.println(o.getClass());
然后从那里开始。如果是向量,请遍历并查找向量中的内容。
我有一个对象,它扩展了。默认情况下,这两个对象都在我的Derby数据库的表中(包含中的字段)。通常我会选择,如下所示: 但是,由于查询的复杂性,我使用的是本机查询,如下所示: 但这会引发一个强制转换异常。我认为这是由于中的任何字段。 我的问题是,如何使用具有相等结果的本机查询作为第一个示例(包括与JPQL查询返回的和(等等)相同的值)来选择?
问题内容: 我正在创建一个示例来演示liferay中的关系。我以Book实体和作者为例进行多对多关系。我正在下面的博客中创建此示例。 http://www.liferaysavvy.com/2014/01/liferay-service-builder-many-to- many_12.html 但是我遇到了类强制转换异常的问题。在博客中也有报道说它正在抛出类强制转换异常。 我想知道这背后的原因。
问题内容: 我有一个实体和一个实体。关系的定义如下: 现在,当我删除角色时,需要从具有该角色的所有用户中删除该角色。通常,您可以通过查找具有该角色的所有用户,从列表中删除该角色并保存用户来执行类似的操作。但是,当可能有超过一百万的用户时,我不想遍历应用程序中的这么多实体。因此,我想使用本机查询从联接表中删除行。我尝试将其添加到我的存储库中: 但是,当我这样做时,我在日志中看到以下内容: 我不明白在
问题内容: 我有一个延伸的对象。默认情况下,两个对象都在我的Derby数据库的表中(来自的包含字段)。通常我会选择一个这样的: 但是由于查询的复杂性,我使用的是本机查询,如下所示: 尽管这会引发强制转换异常。我认为这是由于中的任何字段造成的。 我的问题是,我如何选择一个使用本机查询的结果与第一个示例相同的结果(包括与JPQL查询将返回的和(等)相同的值)? 问题答案: 您可能想尝试以下方法之一:
大家好,我在一个使用SpringDataJPA的SpringMVC项目中工作,我在一个从JpaRepository扩展而来的接口中有一个nativeQuey,在该查询中,我从不同的表中选择一些值,并返回一个 我打印了该ArrayList的值,其内容如下: 由于查询返回3行,每行有7个值,我怀疑这些对象是3(列表),每个列表有7个字段,我非常确定它们是字符串和int,我在类中有两个导入,我想在其中强
有没有一种简单的方法可以做到这一点: 编辑:我写了一份正确答案的工作副本: