JPA SQLSyntax缺少表达式错误

时间:2015-11-24 12:36:55

标签: java jpa

我有一个Java EE应用程序,在名为download的实体中有一个命名Query。 命名查询是:

 @NamedQuery(name="Users.DownloadCount",
            query="SELECT u.fullName, count(u.downloads) FROM WebUser u "
                    + "JOIN u.downloads ud WHERE ud.downloadTime "
                    + "> :startDate AND ud.downloadTime < :endDate")

我尝试在我的一个方法中执行以下查询:

List<Object[]> downloads = new ArrayList();
        if(userName==null){
             downloads = manager.createNamedQuery("Users.DownloadCount").setParameter("startDate", sDate,TemporalType.DATE)
                                                                        .setParameter("endDate", eDate,TemporalType.DATE).getResultList(); 

日期变量sDate和eDate是:

 Date sDate = format.parse(startDate);
 Date eDate = format.parse(endDate);

出于某种原因,我似乎得到了一个:

java.sql.SQLSyntaxErrorException: ORA-00936: missing expression

异常。

我已经从实体类中取出了查询并完成了正常的实体管理器查询调用,但我仍然得到了同样的异常。

2 个答案:

答案 0 :(得分:1)

> :sud.downloadTime之间以及<ld: library not found for -lPods-AAShareBubbles clang: error: linker command failed with exit code 1 (use -v to see invocation) 之间添加空格!

答案 1 :(得分:1)

我意识到了这个问题:

第一个问题:使用聚合函数

缺少一个组

第二个问题:没有加入实体WebUser和下载,因此函数无法计算相关实体的数量。

查询应该是:

"SELECT u.fullName, count(d) FROM WebUser u JOIN u.downloads d "
                    + "WHERE d.downloadTime > :startDate AND d.downloadTime< :endDate"
                    + " GROUP BY u.fullName"