JPA 中联合查询问题处理
程序员文章站
2022-04-12 17:50:19
...
在使用Jpa中使用了@ManyToOne和@OneToMany,在多条件查询中出现问题,处理成功作为一次记录。
问题描述:
user 使用 @OneToMany
order 使用 @ManyToOne
需求结果:order的分页数据查询条件搜索中带有user的属性,需要通过Jpa查询处理。
处理方法:
Specification<PlaceOrder> spec = new Specification<PlaceOrder>() {
@Override
public Predicate toPredicate(Root<Orders> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<>();
if (conditions.containsKey("username")) {
list.add(cb.like(root.get("user").get("username"), (String) conditions.get("username")));
}
query.orderBy(cb.desc(root.get("id")));
Predicate[] predicates = new Predicate[list.size()];
predicates = list.toArray(predicates);
return cb.and(predicates);
}
};
return placeOrderDao.findAll(spec, PageRequest.of(page - 1, limit));
针对使用 @MangToOne:root.get("实体对象").get("实体对象的属性") 来获取属性
针对使用 @MangToMang:需使用root.join();
例如:
Join<Orders, User> join = root.join("orderUser", JoinType.INNER);
list.add(cb.like(join.get("username"), (String) conditions.get("username")));
上一篇: JPA中关于外键设计的测试和思考
下一篇: java.lang.NoSuchMethodError: javax.persistence.OneToOne.orphanRemoval()Z出错解决
推荐阅读
-
Asp.net中处理一个站点不同Web应用共享Session的问题
-
Laravel中的chunk组块结果集处理与注意问题
-
关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)
-
解决MySQL中IN子查询会导致无法使用索引问题
-
在sqlserver中如何使用CTE解决复杂查询问题
-
关于查询中查询无果,也不报错,inpout标签中的value属性为‘ ’的判断问题
-
Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
-
网站SEO优化中 关键词问题如何处理?
-
微博营销中遇到有关粉丝的问题应该怎么处理?
-
关于oracle中clob字段查询慢的问题及解决方法