我查询String SQL_SUM_FILES_SIZE_IN_STORAGE = "SELECT SUM(SIZE_FILE) FROM FILE_ JOIN STORAGE_ ON FILE_.STORAGE_ID_F = STORAGE_.STORAGE_ID WHERE STORAGE_.STORAGE_ID = :idParam";数据库,使用数据库Oracle,得到列中所有值的总和SIZE_FILE。我正在尝试这样做:
public Integer sumSizeFilesInStorage(Long idStorage){
Integer amount;
try (Session session = createSessionFactory().openSession()){
NativeQuery query = session.createNativeQuery(SQL_SUM_FILES_SIZE_IN_STORAGE);
query.setParameter("idParam", idStorage);
amount = (Integer) query.getSingleResult();
}
return amount;
}
但我收到一个错误:
Exception in thread "main" java.lang.IllegalArgumentException: Unknown parameter position: 1
at org.hibernate.query.internal.QueryParameterBindingsImpl.getBinding(QueryParameterBindingsImpl.java:240)
at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:503)
at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:592)
at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:56)
at dz_spring_3.dao.FileDAO.sumSizeFilesInStorage(FileDAO.java:122)
at dz_spring_3.Demo.main(Demo.java:11)
如果我尝试这样做amount = (Long) query.uniqueResult();,我会收到一个错误:
Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Long
at dz_spring_3.dao.FileDAO.sumSizeFilesInStorage(FileDAO.java:123)
at dz_spring_3.Demo.main(Demo.java:11)
但我不知道如何将其转换为正确的类型((
告诉我如何将从请求中收到的金额分配给变量Integer amount?
JPA 在本机查询中不支持命名参数,仅适用于 JPQL。
使用位置参数:
您不能强制转换不是超类的自定义对象:
使用类转换
BigDecimal: