Pracuję nad przełączeniem mojego dostawcy utrwalania JPA z EclipseLink 2.3 na Hibernate 3.6.5.Final. Problem dotyczy rodzimego zapytania. Uwaga: nie było problemu z EclipseLink. Próbuję uzyskać wartość skalarną, String
z tabeli, dla której nie zadeklarowano jednostki. Oto kod:getSingleResult zwraca proxy na natywne zapytanie skalarne w hibernacji
Query q = em.createNativeQuery("select description from foo where foo_id = ?");
q.setParameter(1, fooId);
String description = (String)q.getSingleResult();
Hibernate dostaję ClassCastException
ponieważ obiekt zwrócony jest w rzeczywistości obiekt proxy. Nie wiem, jaki to jest typ, ale wiem, że to nie jest tablica (object.getClass().isArray()
to fałsz) i wiem, że to nie jest lista (object instanceof List
is false
).
Czego mi brakuje?
Jakie interfejsy używa 'q.getSingleResult(). GetClass(). GetInterfaces()' return? –
Ahhh ... to było to, czego potrzebowałem. Jest to typ java.sql.Clob, org.hibernate.engine.jdbc.WrappedClob i java.io.Serializable. Jeśli odpowiesz, przyjmuję to. Nawet nie zdawałem sobie sprawy, że kolumna jest klonem i jestem zaskoczony, że EclipseLink dokonał konwersji na String. – Ryan
cieszę się, że mogę pomóc! –