Spring Data optional parameter in query method

后端 未结 4 1122
有刺的猬
有刺的猬 2020-12-02 22:21

I want to write some query methods in repository layer. This method must ignore null parameters. For example:

List findByBarAndGoo(Bar barParam,          


        
4条回答
  •  庸人自扰
    2020-12-02 22:43

    I don't believe you'll be able to do that with the method name approach to query definition. From the documentation (reference):

    Although getting a query derived from the method name is quite convenient, one might face the situation in which either the method name parser does not support the keyword one wants to use or the method name would get unnecessarily ugly. So you can either use JPA named queries through a naming convention (see Using JPA NamedQueries for more information) or rather annotate your query method with @Query

    I think you have that situation here, so the answer below uses the @Query annotation approach, which is almost as convenient as the method name approach (reference).

        @Query("select foo from Foo foo where foo.bar = :bar and "
            + "(:goo is null or foo.goo = :goo)")
        public List findByBarAndOptionalGoo(
            @Param("bar") Bar bar, 
            @Param("goo") Goo goo);
    

提交回复
热议问题