In JPA 1.0 (TopLink Essentials) I have a native named query:
@NamedNativeQuery(name = "findC1andC2",
query="select c1, c2 from t1 where c3=? order by c4 desc")
where c1
in Oracle DB is number(5, 0)
, and c2
is number(6, 0)
.
When
Object object = em.createNamedQuery("findC1andC2").setParameter(1, "x").setMaxResults(1).getSingleResult();
following:
Object which getClass()
returns java.util.Vector
and, when:
java.util.Vector vector = (java.util.Vector)object;
following:
vector.get(0).getClass()
returns java.math.BigDecimal
vector.get(1).getClass()
returns java.math.BigDecimal
Is is possible Long to be returned for these 2 fields i.e. where the default mapping from sql columns to java is defined? I am aware this could be done using entity class.
JPA implentations uses JDBC internally. According to Oracle data mapping tables.
NUMERIC
types is mapped tojava.math.BigDecimal
.According to this SO answer, it's not yet possible to do pure native scalar mapping with JPA Query but you can create a Facade to be returned by the query.
I hope this helps.