在JPA 1.0(TopLink Essentials)中,我有一个本机命名查询:
@NamedNativeQuery(name = "findC1andC2",
query="select c1, c2 from t1 where c3=? order by c4 desc")
其中Oracle DB中的c1
为number(5, 0)
,而c2
为number(6, 0)
。
当
Object object = em.createNamedQuery("findC1andC2").setParameter(1, "x").setMaxResults(1).getSingleResult();
以下:
Object which getClass()
返回java.util.Vector
和,当:java.util.Vector vector = (java.util.Vector)object;
以下:
vector.get(0).getClass()
返回java.math.BigDecimal
vector.get(1).getClass()
返回java.math.BigDecimal
是否可以为这两个字段返回Long,即定义了从sql列到java的默认映射? 我知道这可以使用实体类来完成。
答案 0 :(得分:0)
JPA实现在内部使用JDBC。根据{{3}}。 NUMERIC
种类型已映射到java.math.BigDecimal
。
根据这个Oracle data mapping tables,它还不能用JPA Query进行纯本机标量映射,但你可以创建一个由查询返回的Facade。
我希望这会有所帮助。