group by子句可以在spring boot jpa中获取用户输入吗?

时间:2016-03-24 13:41:30

标签: hibernate jpa spring-boot spring-data-jpa

我使用@query在Spring启动Jpa中创建了一个查询。它就像

@Query(
    "select id,sum(col_a),sum(col_b),
    weekcal(to_date(?2,'mm/dd/yyyy'),weekof) as startofweek 
    from abc_table 
    where id=?1 and 
    weekof between to_date(?2,'mm/dd/yyyy') and to_date(?3,'mm/dd/yyyy')
    group by weekcal(to_date(?2,'mm/dd/yyyy'),weekof),id")
List<object_abc> method_abc(String id,String fromdate,String todate)

当我运行我的测试用例时,我得到了这个错误跟踪:

  

[WARN] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL错误:   979,SQLState:42000 [ERROR]   org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ORA-00979:不是   GROUP BY表达式

注意:weekcal是我在SQl中的用户定义函数,它接受两个日期参数并返回一个varchar。 weekof是列名。

可以通过将用户输入作为JPA中的参数进行分组,因为当我硬编码任何日期示例'01 -17-2016'而不是序数(?2)时,相同的查询工作正常。

提前致谢。

1 个答案:

答案 0 :(得分:0)

  

@Query(“SELECT c.currency,SUM(c.population)FROM Country c WHERE c.continents GROUP BY c.currency HAVING COUNT(c)&gt; 1”)

     

int getCurrencyCount(@Param(“currency”)长货币,@ Param(“人口”)长人口,@ Param(“大陆”)字符串大陆)

你可以在这里找到更多的例子 JPA Query Structure