返回精确值而不是匹配值的findAll的替代方法?

时间:2018-10-17 08:34:40

标签: java spring-data-jpa

列出findAll(@Nullable规范规范)返回与规范匹配的所有值。

示例:如果在规范中我有一个参数= 3.0,则findAll返回所有与之匹配的值。 因此它返回了例如543.0,但我只想要3.0

您知道一个仅向我返回准确值的函数吗?

3 个答案:

答案 0 :(得分:0)

您需要致电:

List findBySpecification(@Nullable Specification spec)

您的数据库表如何?

答案 1 :(得分:0)

如果我正确理解了您想要实现的目标,则不需要Specification

假设您要基于名为YourObject的字段的值来获取price的列表,只需在存储库接口中添加一个方法:

public interface YourObjectRepository extends JpaRepository<YourObject, Short>, JpaSpecificationExecutor<YourObject> {
    public List<YourObject> findByPrice(Double price);
}

Spring会根据需要自动实现原型:获取所有具有等于参数中给定值的YourObject的价格。

答案 2 :(得分:0)

经过一些重新设置后,我没有发现任何预定义的方法。 所以我用@Query

@Query(Select t FROM Table t Where (t.price= :priceValue or null= :priceValue) and ( t.location= :locationValue or null= :locationValue) 
List<Entity> getAllWithExactValue(@Param("priceValue") String priceValue, @Param("locationValue") String locationValue);

这使您具有如下端点:

localhost:8080/param?locationValue=ClujNapoca&priceValue=1234

 localhost:8080/param?priceValue=1234

localhost:8080/param?locationValue=ClujNapoca

作为回报,我们将只收到具有我们要求的确切值的变量