2012-06-28 16 views
7

Tengo un queryString lo largo de las líneas de:Hibernate: ¿puedo mezclar parámetros nominales y posicionales?

session.createSQLQuery("SELECT C.FIRSTNAME AS firstName, C.LASTNAME as lastName FROM ADDRESSBOOK_CONTACT AS C WHERE C.ADDRESSBOOK_ID = :addressbookId AND firstName = ?"); 

Al configurar mi parámetro de posición, la consulta se ejecuta de forma normal pero no hay resultado:

query.setParameter(0, "firstname1010"); 
query.setParameter("addressbookId", addressbook.getId()); 

que está mal. Si cambio mi posicional por el nombre:

query.setParameter(firstname, "firstname1010"); 

Luego mi consulta arroja los resultados correctos.

Sin entrar en una explicación intrincada de por qué estoy haciendo esto, me gustaría saber si la mezcla de los dos tipos debe ser compatible o no? Estoy usando hibernación 3.6.3.Final

Respuesta

5

A partir de los documentos de nivel de clase en org.hibernate.Query:

No puedes mezclar y parámetros partido de estilo JDBC y parámetros con nombre en la misma consulta.

Así que el comportamiento que está viendo es completamente esperado.

Cuestiones relacionadas