如何在@query符号中添加查询条件,可能吗?

时间:2019-07-15 12:06:52

标签: java hibernate spring-data-jpa hibernate-mapping hibernate-criteria

存储库

@Repository
public interface UserRepository extends JpaRepository<SalutationMst, Long> {

    @Query("select id from SalutationMst where name=:name and code=:code and id=:id")
    Optional<Long> findByAny(String name,String code,Long id);


}

是否可以通过在name,code,id中查找值来从此处添加条件。该存储库正在从控制器中调用。

2 个答案:

答案 0 :(得分:0)

尝试这个

 @Query("select e.id from SalutationMst e where e.name=:name and e.code=:code and e.id=:id")
 Optional<Long> findByAny(@Param("name")String name,@Param("code")String code,@Param("id")Long id);

另一种方式:

 @Query("select e.id from SalutationMst e where e.name=?1 and e.code=?2 and e.id=?3")
 Optional<Long> findByAny(String name,String code,Long id);

无需删除参数,只需传递“ Null”值

 select e.id from SalutationMst e where (e.name=?1 or ?1 is null) and e.code=?2 and e.id=?3  

答案 1 :(得分:0)

在这种情况下,我将使用规范check this 您可以在此处动态形成谓词。

如果这看起来有点复杂,则可以使用示例查询check this 默认情况下,它将忽略空字段。