Estoy trabajando para cambiar mi proveedor de persistencia JPA de EclipseLink 2.3 a Hibernate 3.6.5.Final. El problema es con una consulta nativa. Nota: esto no fue un problema con EclipseLink. Estoy tratando de obtener un valor escalar, un String
de una tabla para la que no tengo una Entidad declarada. Aquí está el código:getSingleResult devuelve el proxy en la consulta escalar nativa en hibernación
Query q = em.createNativeQuery("select description from foo where foo_id = ?");
q.setParameter(1, fooId);
String description = (String)q.getSingleResult();
con Hibernate me siento un ClassCastException
porque el objeto devuelto es en realidad un objeto proxy. No sé de qué tipo es, pero sé que no es una matriz (object.getClass().isArray()
es falsa) y sé que no es una lista (object instanceof List
es false
).
¿Qué me estoy perdiendo?
¿Qué interfaces hace 'q.getSingleResult(). GetClass(). GetInterfaces()' return? –
Ahhh ... eso era lo que necesitaba. Es de tipo java.sql.Clob, org.hibernate.engine.jdbc.WrappedClob y java.io.Serializable. Si haces una respuesta, la aceptaré. Ni siquiera me di cuenta de que la columna era un clob y me sorprende que EclipseLink estuviera haciendo la conversión a String para mí. – Ryan
¡me alegro de poder ayudar! –