是否有任何可能的方法来忽略JPA Example Matcher的所有路径

时间:2017-07-21 02:50:33

标签: spring spring-data-jpa matcher query-by-example

我是Spring JPA的新手。 我有两个关于Example和ExampleMatcher API的问题。

  1. 除了我设置匹配器的一些路径之外,有没有办法忽略所有路径。或者,如果示例对象的路径具有null值,是否有任何方法可以忽略所有路径。设置如下所示的所有路径名称非常烦人:
  2. ExampleMatcher<Product> matcher =ExampleMatcher.matching().ignorePaths("field_a", "field_b");

    1. 如何使用Example匹配连接列。例如。产品实体具有用户实体字段@ManyToOne关系。用户实体有几个字段,但我的Example对象的User字段只填充了userId字段。在这种情况下,我想查找产品数据,其中包含产品Example对象中包含的用户对象中包含的user_id外键列匹配userId字段值。
    2. 抱歉英语不好......其实这是我在Stack Overflow的第一个问题。 谢谢你的关注。 我很期待很好的答案。

1 个答案:

答案 0 :(得分:2)

Spring数据 默认 将忽略属性中的空值。因此,您无需忽略空值的路径。我们还可以在匹配器上使用withIgnoreNullValues()docs)方法调用来明确告诉它忽略空值。

注意原始值(int,double等)如果未设置仍将被使用,因为基元不能具有空值而是使用默认值,因此如果不用于匹配,则应忽略基本属性。

对于你的第二个问题,你可以做类似下面的事情

Product product = new Product();
User user = new User();
user.setId(5); // Id to be matched
product.setUser(user); // Associate User object with Product        
Example<Product> example = Example.of(product,matcher);