我有一个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
异常。
我已经从实体类中取出了查询并完成了正常的实体管理器查询调用,但我仍然得到了同样的异常。
答案 0 :(得分:1)
在> :s
和ud.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"