当前位置: 首页 > 知识库问答 >
问题:

如何在JPA中编写求和查询?

潘凯
2023-03-14

我在mySql中有一个查询,我想在我的控制器中编写。

SELECT sum(`column`='value') ,b.`date`  FROM table b WHERE b.user= 'user1' and b.`date` between '2019-07-21' and '2019-07-26' group by b.`date`
@Transactional
@Modifying
@Query("SELECT sum(column='value') ,b.date  FROM myclasse b WHERE b.user= :user and b.date between :dt1 and :dt2 group by b.date")
    List<Object[]> function( String user,@Param("dt1")Date dt1,@Param("dt2")Date dt2);

原因:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:应为CLOSE,在org.hibernate.internal.exceptionConverterImpl.convert(exceptionConverterImpl.java:138)~[hibernate-core.exceptionConverterImpl.java:181)~[hibernate-core][SELECT SUM(column='value'),b.date FROM com.project.myclass b,其中b.user=:user和b.date by by by date]第1行第23列附近发现“=”[SELECT SUM(column='value'),b.date]-5.3.10.final.jar:5.3.10.final]在org.hibernate.internal.exceptionconverterimpl.convert(exceptionconverterimpl.java:188)~[hibernate-core-5.3.10.final.jar:5.3.10.final]在org.hibernate.internal.abstractsharedsessioncontract.createquery(abstractsharedsessioncontract.createquery(abstractsharedsessioncontract.java:729)~[hibernate-core-5.3.10.final]在org.hibernate.internal.abstractsessioncontract.java:23)~[hibernate-core-5.3.10.final.jar:5.3.10.final]在al.jar:5.3.10.final]在sun.refleCT.NativeMethodAccessorImpl.Invoke0(本机方法)~[NA:1.8.0_161]在Sun.Reflect.NativeMethodAccessorImpl.Invoke(未知源)~[NA:1.8.0_161]在Sun.Reflect.DelegatingMethodAccessorImpl.Invoke(未知源)~[NA:1.8.0_161]在java.lang.Reflect.Method.Invoke(未知源)~[NA:1.8.0_161]在org.SpringFramework.orm.jpa.ExtendeDentityManagerCreator ar:5.1.8.release]在com.sun.proxy.$proxy118.createquery(未知源)~[na:na]在org.springframework.data.jpa.repository.query.simplejpaquery.validatequery(simplejpaquery.java:87)~[spring-data-jpa-2.1.9.release.jar:2.1.9.release]...省略76个常见帧

共有1个答案

羊柏
2023-03-14

case表达式替换布尔表达式:

SELECT
    b.date,
    COUNT(CASE WHEN some_col = 'some_value' THEN 1 END) AS cnt
FROM table_b b
WHERE b.user = 'user1' AND b.date BETWEEN '2019-07-21' AND '2019-07-26' 
GROUP BY b.date;

语法sum(column='value')是MySQL(可能还有一些其他数据库,如Postgres),但似乎不受JPA支持。

 类似资料:
  • 当我按下搜索按钮时,出现以下错误: 发生错误: 异常[EclipseLink-4002](Eclipse持久性服务-2.3.2.v20111125-r10461):org。日食坚持不懈例外。DatabaseException内部异常:java。sql。SQLException:索引处缺少IN或OUT参数::1错误代码:17041调用:从CRM_DAILY_SHEET WHERE to_char(报

  • 问题内容: 我希望在编写以下查询时基于表’MasterScrip’的’totalTradedVolume’获取前10个结果: 我得到以下异常: 我的jpa查询有问题。有人可以纠正我吗? 问题答案: 在JPA中不被认可。您可以改用以下方法:

  • 问题内容: 谁能帮助我获取下面提到的JPA查询的JPA标准查询。 问题答案: 假设Person与语言有关,这就是您在较早的Hibernate中所做的事情: 我第一次尝试使用JPA 2.0: 请让我知道这是否适合您。 编辑: 更新查询以仅使用一个呼叫。

  • 问题内容: 假设上一课,您如何找到具有特定电子邮件地址的? 这样做简单吗,还是有适当的方法? 问题答案: 那并没那么简单。JPQL 为此提供了运营商: “旧”方式(类似于SQL)是:

  • 我有一个名为“位置”的表,在这里我可以捕捉员工的经纬度。location表有以下字段:id、employee_id(FK to employee表)、latitude、longitude、Created_Date。此表包含许多具有不同created_date的employee_id条目。现在,我想从location表中获得所有员工的最新创建日期。也就是说,location表可能包含1月1日和1月2