使用 Spring 数据 JPA 进行搜索
Search with Spring Data JPA
我有一个领域对象Item
:
项目字段:a
、b
、c
现实中还有很多领域。
我知道我可以创建如下方法:
findByAAndB(...)
在我的自定义查找方法中使用 @Query(SELECT ... WHERE ...)
但我仍然想知道是否有更好的解决方案:鉴于我可能同时要查询一堆字段,查询 items
table 最简单的方法是什么?
如果我有如下所示的方法,有没有办法自动将 != null
字段映射到 SELECT
?
findBy(Item prototype)
您可以使用实体管理器创建自定义查询并创建动态查询。为此,您必须使用默认 -1
定义所有变量,您必须在查询中使用它,然后获取所有变量 ache 检查然后如果将添加变量更改为查询并执行它,则值是否更改。
例如
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();
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);
我有一个领域对象Item
:
项目字段:a
、b
、c
现实中还有很多领域。
我知道我可以创建如下方法:
findByAAndB(...)
在我的自定义查找方法中使用
@Query(SELECT ... WHERE ...)
但我仍然想知道是否有更好的解决方案:鉴于我可能同时要查询一堆字段,查询 items
table 最简单的方法是什么?
如果我有如下所示的方法,有没有办法自动将 != null
字段映射到 SELECT
?
findBy(Item prototype)
您可以使用实体管理器创建自定义查询并创建动态查询。为此,您必须使用默认 -1
定义所有变量,您必须在查询中使用它,然后获取所有变量 ache 检查然后如果将添加变量更改为查询并执行它,则值是否更改。
例如
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();
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);