0

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

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

c1Oracle DB 中的位置是,number(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 的默认映射?我知道这可以使用实体类来完成。

4

1 回答 1

0

JPA 实现在内部使用 JDBC。根据Oracle数据映射表NUMERIC类型映射到java.math.BigDecimal.

根据这个SO answer,尚无法使用 JPA Query 进行纯本机标量映射,但您可以创建一个由查询返回的 Facade。

我希望这有帮助。

于 2014-08-26T11:44:27.953 回答