[英]How do I use multiple WHERE clause in parameterized SQL query?
I have a repository where I want current month records alone to display for the passed User object parameter.我有一个存储库,我希望仅显示当前月份记录以显示传递的用户 object 参数。 This is the query that I have but it is not compiling.
这是我的查询,但它没有编译。
Repository存储库
@Query("select sum(investment.principal) from Investment investment where MONTH(investment.startDate) = MONTH(CURDATE()) "
+ "AND YEAR(investment.startDate) = YEAR(CURDATE()) join investment.customer_id.marketer marketer where marketer = :marketer ")
BigDecimal getMarketerMonthlyInflow(User marketer);
This is the compilation error I am getting这是我得到的编译错误
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: join near line 1, column 188 [select sum(investment.principal) from com.bethsaida.org.models.Investment investment where MONTH(investment.startDate) = MONTH(CURDATE()) AND YEAR(investment.startDate) = YEAR(CURDATE()) join investment.customer_id.marketer where markter = :marketer ]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.2.1.Final.jar:5.2.1.Final]
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91) ~[hibernate-core-5.2.1.Final.jar:5.2.1.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:288) ~[hibernate-core-5.2.1.Final.jar:5.2.1.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187) ~[hibernate-core-5.2.1.Final.jar:5.2.1.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) ~[hibernate-core-5.2.1.Final.jar:5.2.1.Final]
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115) ~[hibernate-core-5.2.1.Final.jar:5.2.1.Final]
In sql JOIN clause is before WHERE clause.在 sql JOIN 子句位于 WHERE 子句之前。 Also joins work with keyword ON, not where.
还与关键字 ON 一起工作,而不是在哪里。
I can't give you correct query without knowing table columns, use case, etc., but it should look something like that:在不知道表列、用例等的情况下,我无法为您提供正确的查询,但它应该看起来像这样:
SELECT SUM(investment.principal)
FROM Investment investment
JOIN investment.customer_id.marketer ON markter = :marketer
WHERE MONTH(investment.startDate) = MONTH(CURDATE())
AND YEAR(investment.startDate) = YEAR(CURDATE())
This fixed it:这修复了它:
@Query("select sum(investment.principal) from Investment investment JOIN investment.customer_id.marketer "
+ "marketer ON marketer_id = :marketer WHERE MONTH(investment.startDate) = MONTH(CURDATE()) "
+ "AND YEAR(investment.startDate) = YEAR(CURDATE())")
BigDecimal getMarketerMonthlyInflow(User marketer);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.