如何在@Query注解中添加复杂的内部查询
How to add complex inner query to @Query annotaion
正常 sql 查询在数据库中正常工作 sql 开发人员传递 bID 和期间的值。
SELECT * FROM A WHERE abcID IN (SELECT abcID FROM B WHERE bID=1) AND period=3
在 Repository 的项目中 class 我通过了这个
@Query("select a from A where a.abcID IN:(select b.abcId from B where bID=:RevID) and period=:period")
错误如
Space is not allowed after parameter prefix ':' [select a from A
where a.abcID IN:(select b.abcId from B where bID=:RevID) and
period=:period]
我想知道如何在 @Query
注释中正确插入上述查询
首先我要告诉你以下几点。
- 您不能将 select 查询用作
select a from A where a.abcID
。这里 a 是一个列,所以不能定义像 a.abcID
这样的东西。需要 select column from tableA a where a.abcID
IN
子句中的查询使用相同。它需要像 select b.abcId from tableB b where b.bID=:RevID
- 您用作
:RevID, :period
的内容需要作为 @Param("RevID"), @Param("period")
传递给查询方法。
这是查询模板。
@Query("select a.nameOfcolumnYouWantToRetrieve from tableA a where a.someColumn in(select b.someColumn from tableB b where b.columnValueOfTableBYouwantToMatch=:RevID) and a.period=:period")
利用这一点,尝试下面的查询。
@Query("select a.id from A a where a.abcID in(select b.abcId from B b where b.bID =:RevID) and a.period=:period")
正常 sql 查询在数据库中正常工作 sql 开发人员传递 bID 和期间的值。
SELECT * FROM A WHERE abcID IN (SELECT abcID FROM B WHERE bID=1) AND period=3
在 Repository 的项目中 class 我通过了这个
@Query("select a from A where a.abcID IN:(select b.abcId from B where bID=:RevID) and period=:period")
错误如
Space is not allowed after parameter prefix ':' [select a from A where a.abcID IN:(select b.abcId from B where bID=:RevID) and period=:period]
我想知道如何在 @Query
注释中正确插入上述查询
首先我要告诉你以下几点。
- 您不能将 select 查询用作
select a from A where a.abcID
。这里 a 是一个列,所以不能定义像a.abcID
这样的东西。需要select column from tableA a where a.abcID
IN
子句中的查询使用相同。它需要像select b.abcId from tableB b where b.bID=:RevID
- 您用作
:RevID, :period
的内容需要作为@Param("RevID"), @Param("period")
传递给查询方法。
这是查询模板。
@Query("select a.nameOfcolumnYouWantToRetrieve from tableA a where a.someColumn in(select b.someColumn from tableB b where b.columnValueOfTableBYouwantToMatch=:RevID) and a.period=:period")
利用这一点,尝试下面的查询。
@Query("select a.id from A a where a.abcID in(select b.abcId from B b where b.bID =:RevID) and a.period=:period")