|
Hi people,
When I was making some criteria queries, I thought that I can found a little bug with this functionality.
This is the query:
CriteriaQuery<Object[]> c3 = cb.createQuery(Object[].class); Root<Usuario> emp3 = c3.from(Usuario.class); c3.multiselect(emp3.get(Usuario_.id), cb.construct(UsuarioInfo.class, emp3.get(Usuario_.nome), emp3.get(Usuario_.idade)));
What I was expected:
for(Object [] object : manager.createQuery(c3).getResultList()) { System.out.println("object:"+object[0]); System.out.println("user name:"+((Usuario)object[1]).getNome()); System.out.println("user age:"+((Usuario)object[1]).getIdade()); }
... object: 1 user name: Celso user age: 28
What I've received:
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: , near line 1, column 26 [select generatedAlias0.id, new br.com.test.entity.UsuarioInfo(generatedAlias0.nome, generatedAlias0.idade) from br.com.test.entity.Usuario as generatedAlias0]
This same query without the line "emp3.get(Usuario_.id)" only with cb.construct works fine.
|