Fork me on GitHub

Summarize Jpa

Jpa中遇到的知识点总结


1.jpa实现limit的方法(自己定义一个pageable)

final int currentPage = 0;
final int pageSize = 5000;
Sort sort = new Sort(Sort.Direction.DESC, "createTime");
Pageable pageable = new PageRequest(currentPage, pageSize, sort);
Page<Order> page = orderRepository.findAll(spec, pageable);
List<Order> list = page.getContent();

2.jpa实现limit的方法2

//这里必须加by
例:userRepository.findTop10By();

3.jpa的一级缓存

//jpa的查询方法生效后 默认会缓存这个查询结果
for (Integer organizationId : listMap.keySet()) {
        OrganizationManager organizationManager = organizationManagerRepository.findById(organizationId);
        if (organizationManager == null){
            log.error("组织不存在");
            throw new MessageException("组织不存在");
        }
        //这里会循环查询到resources
        List<Resource> resources = userOrganizationManagerRoleRepository.findResourceByUserIdAndOrganizationId(userId, organizationId);
        //清一级缓存
        entityManager.clear();
        List<Resource> list = buildTree(resources);
        //对resource进行了操作,如果不清一级缓存会导致查询的结果还是上一次循环的结果
        map1.put(organizationId + organizationManager.getType(), list);
}