【问题标题】:Retrieving single value using JPA?使用 JPA 检索单个值?
【发布时间】:2011-12-01 14:03:29
【问题描述】:

JPA 是否支持将单个值映射到标量数据类型?例如,在以下查询中映射 NUM

SELECT COUNT(*) AS NUM FROM EMPLOYEES

到某个变量

int numerOfEmployees

或者我是否必须将 JDBC 用于此类用例?

【问题讨论】:

    标签: jpa


    【解决方案1】:

    是的,您可以从 JPQL 查询中返回标量类型

    long num = ((Number)em.createQuery("select count(e) from Employee e")
                        .getSingleResult()).longValue();
    

    以及来自本机 SQL 查询:

    long num = ((Number)em.createNativeQuery("select count(*) from Employees")
                        .getSingleResult()).longValue();
    

    请注意,在某些情况下,结果类型可能取决于数据库,即它可能类似于 BigDecimal

    【讨论】:

    • 哦,谢谢。从文档中不明白这是可能的:docs.oracle.com/javaee/6/api/javax/persistence/… [请注意,我必须使用对象类型并使用它的 intValue() 来使您的示例工作。]
    • 我将解决方案更新为使用(Number)...longValue(),这是BigInteger 的超类型,我不确定是否有任何DB/驱动程序不为此返回Number 的子类型案例,但原始答案中的(long) 对我来说“从不”工作。 (我还想知道您是否可以将Number.class 指定为类型映射以确保确定(Double.class 似乎不起作用:stackoverflow.com/questions/8959771/…
    猜你喜欢
    • 2015-12-22
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2016-07-04
    • 2019-09-20
    • 2013-10-17
    • 2019-03-16
    相关资源
    最近更新 更多