@Query动态本地查询

时间:2018-11-07 21:00:39

标签: java sql spring spring-data-jpa spring-el

我尝试通过@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.还是我可以通过其他类似的方式做到这一点?

0 个答案:

没有答案