我想在WHERE子句和ORDER BY表达式中使用计算值。在普通的SQL中它看起来像
SELECT some, colums, (some arbitrary math) AS calc_value FROM table WHERE calc_value <= ? ORDER BY calc_value
如果我尝试使用JPQL
entitymanager.createQuery("SELECT e, (some arbitrary math) AS calc_value FROM Entity e WHERE calc_value <= :param ORDER BY calc_value", Entity.class);
失败了。显然,因为查询的返回是Entity和calc_value的元组(即Double)。
是否有办法将此问题转换为一个查询,使用强类型返回值(即Entity.class,因为计算值并不重要)。
答案 0 :(得分:0)
我遇到了类似的问题,并没有解决问题,将其提取到正确的对象中:
最后我使用了这种方法,然后将oject [0]提取到我真正的Java-Object中:
TypedQuery<Object[]> q = em.createQuery("select v, (2 * 4) as temp from MyObject v order by temp", Object[].class);
List<Object[]> results = q.getResultList();
for (Object[] o : results)
MyObject mo = (MyObject) o[0];