什么是JPA 1.0命名的本机查询默认映射到标量值

时间:2014-08-26 11:27:05

标签: java jpa-1.0

在JPA 1.0(TopLink Essentials)中,我有一个本机命名查询:

@NamedNativeQuery(name = "findC1andC2",
query="select c1, c2 from t1 where c3=? order by c4 desc")

其中Oracle DB中的c1number(5, 0),而c2number(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的默认映射? 我知道这可以使用实体类来完成。

1 个答案:

答案 0 :(得分:0)

JPA实现在内部使用JDBC。根据{{​​3}}。 NUMERIC种类型已映射到java.math.BigDecimal

根据这个Oracle data mapping tables,它还不能用JPA Query进行纯本机标量映射,但你可以创建一个由查询返回的Facade。

我希望这会有所帮助。