我尝试通过@Query
在spring存储库中使用dto对象上的spel表达式作为输入参数来创建本机查询。
动态功能应位于子句中。
我的想法是,当name为null时,应满足条件1 = 1;当name不为null时,应通过检查。
这是我的代码:
@Query(value = "SELECT m.start_date " +
"FROM match m " +
"LEFT JOIN team t on t.id = m.home_team_id " +
"WHERE :#{#dto.teamName != null ? 't.name =' + #dto.teamName : '1 = 1'}"
,nativeQuery = true)
public List<MatchShortDTO> findAllMatchesForTeam(@Param("dto") MatchFilterDTO matchFilterDTO);
结果是:
SELECT m.start_date FROM match m LEFT JOIN team t on t.id = m.home_team_id WHERE 't.name =Poland'
但是这部分't.name = Poland'
中有字符'
应为t.name = 'Poland'
,然后查询才能正常运行
我知道这不是最好的方法,但是我需要这样
我的问题:
1.可以通过@Query
和spel实现吗?
2.还是我可以通过其他类似的方式做到这一点?