【发布时间】:2019-05-08 10:29:30
【问题描述】:
我在 JPA 存储库中定义了这个查询
@org.springframework.data.jpa.repository.Query("select min(cur.volumeUsd24h), max(cur.volumeUsd24h), "
+ "min(marketCapUsd), max(marketCapUsd), "
+ "min(availableTickets), max(availableTickets), "
+ "min(totalTickets), max(totalTickets), "
+ "min(maxTickets), max(maxTickets) "
+ "from Tickets cur ")
Object findQueryFiltersValues ();
和
Object filtersValues = tdkService.findQueryFiltersValues();
if (LOG.isDebugEnabled()) {
LOG.debug("filtersValues {} " , filtersValues.getClass());
}
地点:
filtersValues class [Ljava.lang.Object;
我清楚地看到该类是 [Ljava.lang.Object; ,但我不知道如何获取列表的不同元素,因为如果我这样做了
LOG.debug("filtersValues {} " , filtersValues[0]);
我得到一个编译错误:
The type of the expression must be an array type but it resolved to
Object
当我登录时LOG.debug(filtersValues.getClass().isArray()); 是true
我也试过
@org.springframework.data.jpa.repository.Query("select min(cur.volumeUsd24h), max(cur.volumeUsd24h), "
+ "min(marketCapUsd), max(marketCapUsd), "
+ "min(availableTickets), max(availableTickets), "
+ "min(totalTickets), max(totalTickets), "
+ "min(maxTickets), max(maxTickets) "
+ "from Tickets cur ")
List<Object> findQueryFiltersValues ();
然后
List<Object> filtersValues = tdkService.findQueryFiltersValues();
List<Object> ret = Arrays.asList(filtersValues);
List<Object> values = Arrays.asList(ret);
Long value = (Long)values.get(0);
然后我得到了
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Long
【问题讨论】:
-
你试过了吗:List
-
如果要记录该数组,请使用
Arrays.toString(filtersValues )。 -
Arrays 类型中的 toString(long[]) 方法不适用于参数 (Object) :-(
-
请添加
LOG.debug(filtersValues.getClass().isArray());行,但如果不是数组,为什么Object[] filtersValues = tdkService.findQueryFiltersValues();不会抛出错误?
标签: java spring spring-data-jpa jpql