千家信息网

Java中如何实现jpa外连接查询join

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下Java中如何实现jpa外连接查询join,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、IndexTagController.java@GetMapping("
千家信息网最后更新 2025年01月20日Java中如何实现jpa外连接查询join

小编给大家分享一下Java中如何实现jpa外连接查询join,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1、IndexTagController.java

@GetMapping("/tags/{id}")    public String types(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)Pageable pageable,                        @PathVariable long id,                        Model model,                        HttpSession session){        //找到所有的标签,并且按照标签新闻量排序        List tags = tagService.listTagTop(50);        if(id == -1){            //得到最大数据量的分类            id = tags.get(0).getId();        }        model.addAttribute("tags",tags);        model.addAttribute("page",newsService.listNews(id,pageable));        model.addAttribute("activeId",id);        session.setAttribute("query","");        return "tags";    }

newService.listNews(id,pgeable)中id为标签的id,这个方法要做的就是查询出标签中包含id为参数id的所有新闻。

2、业务层代码

NewService.java是一个接口,其中存在以下方法

//根据标签Id查找符合条件的新闻Page listNews(long id,Pageable pageable);

NewServiceImpl.java为实现NewService接口的类,实现listNews方法

@Override    public Page listNews(long id, Pageable pageable) {        return newsRepository.findAll(new Specification() {            @Override            public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) {                //外连接查询 Join                Join join =root.join("tags");                return cb.equal(join.get("id"),id);            }        },pageable);    }

NewsRepository.java 继承了JpaSpecificationExecutor

public interface NewsRepository extends JpaRepository, JpaSpecificationExecutor {    @Query("select n from News n where n.recommend = true ")    List findTop(Pageable pageable);    @Query("select n from News n where n.title like ?1 or n.content like ?1")    Page findByQuery(String query,Pageable pageable);    @Query("select function('date_format',n.updateTime,'%Y') as year1 from News n group by year1 order by year1 desc ")    List findGroupYear();    @Query("select n from News n where function('date_format',n.updateTime,'%Y') = ?1 ")    List findByYear(String year);}

看完了这篇文章,相信你对"Java中如何实现jpa外连接查询join"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0