最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jpa實現多對多的屬性時查詢的兩種方法

 更新時間:2021年11月23日 08:54:02   作者:韓小文  
這篇文章主要介紹了jpa實現多對多的屬性時查詢的兩種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

jpa多對多的屬性查詢

第一:采用JPQL方式

使用@Query拼接jpql語句完成多對多的查詢;

@query(
SELECT User FROM User u JOIN Student s on s.id = u.id where u.name LIKE :name
)
User findallByName(@param(“name”)String name);

第二:采用specification 方法

user中有List<student>屬性,多對多的關系;

代碼如下:

   Specification<Class> specification = new Specification<>(){
   @override
   public predicate toPredicate(Root<Class> root , CriteriaQuery<?> query ,CriteriaBuilder cb){
       List<Precidate> precidate = Lists.newArrayList<>();
       if(num>0){
       Predicate p1 = cb.equal(root.get("num").as(Integer.Class),count);
         precidate.add(p1);
       }
       if(channel > 0){
         ListJoin<User,Student> join= root.join(root.getModel().getList("student",student.class),JoinType.LEFT);
         Predicate p2 = cb.equal(join.get("id").as(Integer.Class));
         //這里面的join代表的是student,屬于加入進來的部分,而不是鏈接表的全部結果;
         precidate.add(p2);
       }
       List<User> list = DAO.findAll(specification,new Sort(DESC,"id"));
}
}

JPA,HQL多對多的查詢語句

一個老師教許多學生,一個學生被許多老師教,一個學生有好多書,同一種書被許多同學擁有.

要查詢教擁有書"a"的學生的老師!

Hql語句

SELECT t FROM Teacher t join t.students s join s.books b where b.name = 'a' 

解釋:t.students s中s并不是集合的意思,而是t的students對象的表別名,join t.students s這個hql,hibernate會翻譯成兩個表的內連接關系

錯誤寫法:

SELECT t FROM teacher t where t.students.books.name = 'a' 

其實道理是很顯然的,t.students是一個Set,那么這個Set怎么可能有books這樣的屬性呢?同理books.name也不對,所以使用表間連接并給出別名t.students s,此時的對象s才有books屬性,所以可以寫s.books b,最后使用b.name限制查詢b.name = 'a'.

另外一種寫法

SELECT t FROM Teacher t,Student s,Book b where s.id in elements(t.students) and b.id in elements(s.books)

這種方法沒有出錯!不過這種方式要用子查詢!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 基于CyclicBarrier和CountDownLatch的使用區(qū)別說明

    基于CyclicBarrier和CountDownLatch的使用區(qū)別說明

    這篇文章主要介紹了基于CyclicBarrier和CountDownLatch的使用區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決@Autowired注入空指針問題(利用Bean的生命周期)

    解決@Autowired注入空指針問題(利用Bean的生命周期)

    這篇文章主要介紹了解決@Autowired注入空指針問題(利用Bean的生命周期),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Springboot mybatisplus如何解決分頁組件IPage失效問題

    Springboot mybatisplus如何解決分頁組件IPage失效問題

    這篇文章主要介紹了Springboot mybatisplus如何解決分頁組件IPage失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringCloud @FeignClient注入Spring容器原理分析

    SpringCloud @FeignClient注入Spring容器原理分析

    本文詳細分析了Spring Boot中@FeignClient注解的掃描和注入過程,重點探討了@EnableFeignClients注解的工作原理,通過源碼分析,揭示了@EnableFeignClients如何通過@Import注解和FeignClientsRegistrar類實現bean定義的加載
    2024-12-12
  • Spring實現HikariCP連接池的示例代碼

    Spring實現HikariCP連接池的示例代碼

    在SpringBoot 2.0中,我們使用默認連接池是HikariCP,本文講一下HikariCP的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • JAVA中值類型和引用類型的區(qū)別

    JAVA中值類型和引用類型的區(qū)別

    在java開發(fā)中經常會遇到值類型和引用類型知識,但是有很多朋友不清楚java中值類型和引用類型的區(qū)別,今天小編通過本文給大家介紹下
    2017-02-02
  • Java?中的?clone(?)?和?new哪個效率更高

    Java?中的?clone(?)?和?new哪個效率更高

    很多朋友不太清楚clone()和new那個更快?針對這個問題我百度了好多資料,最終小編總結下關于Java?中的?clone(?)?和?new哪個效率更高的問題,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • OpenTelemetry初識及調用鏈Trace詳解

    OpenTelemetry初識及調用鏈Trace詳解

    這篇文章主要為為大家介紹了OpenTelemetry初識及調用鏈Trace詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • SpringBoot結合FreeMarker視圖渲染的實現

    SpringBoot結合FreeMarker視圖渲染的實現

    FreeMarker它允許開發(fā)人員使用模板和數據來生成輸出文本,如HTML網頁、電子郵件、配置文件和源代碼等,本文主要介紹了SpringBoot結合FreeMarker視圖渲染的實現,感興趣的可以了解一下
    2024-03-03
  • Spring整合Quartz分布式調度的示例代碼

    Spring整合Quartz分布式調度的示例代碼

    本篇文章主要介紹了Spring整合Quartz分布式調度的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

淮北市| 和平县| 察哈| 随州市| 天等县| 阳江市| 轮台县| 孟连| 伊金霍洛旗| 集贤县| 延寿县| 闵行区| 镶黄旗| 五寨县| 密云县| 彝良县| 普安县| 化州市| 桐柏县| 体育| 德保县| 章丘市| 巴林左旗| 保定市| 宜宾县| 郯城县| 溧水县| 嵩明县| 瑞安市| 鄂托克前旗| 嘉兴市| 宜兰县| 罗田县| 达孜县| 清徐县| 鄄城县| 平果县| 蒲城县| 安达市| 六枝特区| 鄂托克旗|