【问题标题】:What is JPA 1.0 named native query default mapping to scalar values什么是 JPA 1.0 命名本机查询默认映射到标量值
【发布时间】:2014-08-26 11:27:04
【问题描述】:

在 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

是否可以为这 2 个字段返回 Long,即在哪里定义了从 sql 列到 java 的默认映射? 我知道这可以使用实体类来完成。

【问题讨论】:

    标签: java jpa-1.0


    【解决方案1】:

    JPA 实现在内部使用 JDBC。根据Oracle data mapping tablesNUMERIC 类型映射到 java.math.BigDecimal

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

    我希望这会有所帮助。

    【讨论】:

    • 在您指向 Oracle 数据映射表的链接中有 JPublisher(“生成 Java 类以表示数据库实体的实用程序”),它非常有帮助。此外,我一直在探索 JDBC 标准映射和“参数化”更改它的可能性(到目前为止找不到它)。无论如何,您的回答给出了很好的解释,因此被接受。谢谢。
    猜你喜欢
    • 2019-02-01
    • 2019-04-05
    • 2021-06-13
    • 2014-06-25
    • 1970-01-01
    • 2014-08-26
    • 2015-06-08
    • 2011-04-27
    • 2019-07-25
    相关资源
    最近更新 更多