【问题标题】:distinct query with jpa,jasper report使用 jpa、jasper 报告的不同查询
【发布时间】:2012-05-08 09:20:40
【问题描述】:

我正在使用ireport-4.5.0,spring3.0.5RELEASE,jpa2。我有一个名为 User 的实体类,其属性如下 用户身份, 用户名, 密码.I

通过将字段指定为这三个属性名称来设计 jrxml。如果我将 jpa 查询指定为 From USer,那么它可以正常工作并给出结果。但我想要用户名的不同值(用户名列也允许重复值)所以我将 jpaQuery 作为

SELECT userId,DISTINCT(userName),password FROM User 

然后我没有得到结果。查询有什么问题。

您好,我正在提供我正在使用的代码

public User getUsers() throws Exception{
 Query uQuery = entityManager.createQuery("SELECT u.userId,u.userName,u.password FROM User u GROUP BY u.userId,u.userName,u.password");
       List <User>listOfUsers = uQuery.getResultList();
       if (listOfUsers == null) {
           throw new ResourceNotFound();
        }
       for (Iterator iterator = listOfUsers.iterator(); iterator.hasNext();) {
            User userList = (User)iterator.next();

        }

       return userList;

这里我得到了 ClassCastException:java.lang.String 无法转换为 User。它在 for 循环语句中显示了这个异常。我是 JPA 的新手。您能否解释一下如何迭代该对象列表。

【问题讨论】:

标签: java jpa jasper-reports


【解决方案1】:

您不能将 DISTINCT 放在 JPQL 或 SQL 中的单个列上。

您很可能需要使用 group by,

SELECT u.userId,u.userName,u.password FROM User u group by u.userId, u.userName, u.password

【讨论】:

  • 非常感谢您的回复。但我还有一个疑问,我只是改进了代码。你能检查一下,你能告诉我哪里错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多