使用Spring Data JPA进行搜索

时间:2017-04-18 17:13:14

标签: java spring search spring-data-jpa jpql

我有一个域对象Item: 商品字段:abc 它在现实中有更多的领域。

我知道我可以创建像:

这样的方法
  • findByAAndB(...)

  • 在我的自定义查找方法

  • 上使用@Query(SELECT ... WHERE ...)

但我仍然想知道是否有更好的解决方案:考虑到我可能有一堆字段可以同时查询,最简单的查询items表是什么?

如果我有如下所示的方法,是否有办法自动将!= null的字段映射到SELECT

  • findBy(Item prototype)

2 个答案:

答案 0 :(得分:1)

 public class Item{
      String a,b,c;
    }


    Item item=new Item();
    item.setA("a");
    Example<Item> itemExample=ExampleOf(item);
    List<Item> res=itemRepository.findAll(example);

来源:Query By Example

答案 1 :(得分:0)

您可以使用实体管理器创建自定义查询并创建动态查询。为此,您必须使用默认-1定义所有变量,您必须在查询中使用,然后获取所有变量,然后检查值是否更改,如果将add变量更改为查询并执行它。

离。

StringBuilder tempQuery = new StringBuilder("select " + select + " FROM 
Area area ");

    // cityId
    if (cityId != -1) {
        tempQuery.append(" and ");
        tempQuery.append(" area.FCity.cityId = :cityId ");
    }
    // rId
    if (rId != -1) {
        tempQuery.append(" and ");
        tempQuery.append(" area.FRestaurantCenter.FRestaurant = :rId ");
    }

    return tempQuery.toString();