java - JPA Eclipselink NamedQuery 与查询 COUNT

标签 java jpa eclipselink

无法从 NamedQuery 获取整数???

@NamedQuery(    name = Comm.COUNTLIKEVALUEINHOLDER,
        query = "SELECT COUNT(c.id) " +
            "FROM Comm c " +
            "JOIN c.element e " +
            "WHERE c.search1 LIKE :search1 " +
            "AND c.search2 = :search2 " +
            "AND c.type = :type " +
            "AND e.holderelement = :holder"
    )

Object q = em.createNamedQuery(Comm.COUNTLIKEVALUEINHOLDER)
    .setParameter("search1", "bla%")
    .setParameter("search2", "bla2")
    .setParameter("type", t)
    .setParameter("holder", h)
    .getSingleResult();

我从 COUNT 聚合中得到一个实体,而不是长整型或整数。

但是在这里我得到了一个整数。这是完全相同的查询。

Object i = em.createQuery("SELECT COUNT(c.id) " +
    "FROM Comm c " +
    "JOIN c.element e " +
    "WHERE c.search1 LIKE :search1 " +
    "AND c.search2 = :search2 " +
    "AND c.type = :type " +
    "AND e.holderelement = :holder")
    .setParameter("search1", "bla%")
    .setParameter("search2", "bla2")
    .setParameter("type", t)
    .setParameter("holder", h)
    .getSingleResult();

有人有想法吗?

最佳答案

简短回答:

em.createQuery 用于创建动态查询。返回类型由 QL 语言的返回类型决定(上例中的“SELECT COUNT(c.id)”)。

em.createNamedQuery 用于创建静态查询。返回类型可以进行类型转换,例如:

Object q = em.createNamedQuery(Comm.COUNTLIKEVALUEINHOLDER)
   .setParameter("search1", "bla%")
   .setParameter("search2", "bla2")
   .setParameter("type", t)
   .setParameter("holder", h)
   .getSingleResult();

Integer count = (Integer) q;

` 另请参阅:http://www.objectdb.com/java/jpa/query/api

关于java - JPA Eclipselink NamedQuery 与查询 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18527607/

相关文章:

java - Persistence.createEntityManagerFactory() 在哪里寻找持久性单元?

java - Eclipselink/ Derby : Foreign Key Constraint

java - Eclipselink 生成的规范元模型不会从另一个 jar 扩展基本元模型

java - 如何将 hibernate 搜索索引文件保存到项目 WEB-INF 文件夹中?

java - getWindow().getAttributes() 期间出现 NullpointerException;

java - 在 hibernate/jpa 最佳实践问题中将分离的或新的实体与现有实体合并

java - 如何使用 jpa 将数组参数传递给 postgresql 函数?

java - Oracle ADF : SkinFactory is not working correctely in JDeveloper 12. 1.3

java - jetty IOException : Too many open files

hibernate - JPA (Hibernate) 和在运行时设置实体监听器