Sequence of return values from native SQL queries in 3.2
Sequence of return values from native sql queries In previous versions of Hibernate the return value from a native sql query that contains both scalars and entities were always scalar first, entities second. Starting in 3.2 the sequence is governed by the sequence in the mappings or in code. This has the effect that some code will break if you did not specify or call addScalar first. The following code will break since addEntity is called before addScalar and this sequence is now obeyed in 3.2: List result = s.createSQLQuery("select o.*, o.value as anumber from ORDER as o").addEntity(Order.class).addScalar("anumber").list(); Object[] row = (Object[])result.get(0); Integer number = (Integer)row[0]; // cast error since this will be an Order Order order = (Order)row[1]; // cast error since this will be an Integer The following code will work in 3.2 and previous versions because addScalar's is called before addEntity: List result = s.createSQLQuery("select o.*, o.value as anumber from ORDER as o").addScalar("anumber").addEntity(Order.class).list(); Object[] row = (Object[])result.get(0); Integer number = (Integer)row[0]; Order order = (Order)row[1];