欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jpa實現(xiàn)多對多的屬性時查詢的兩種方法

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

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>屬性,多對多的關(guān)系;

代碼如下:

   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,屬于加入進來的部分,而不是鏈接表的全部結(jié)果;
         precidate.add(p2);
       }
       List<User> list = DAO.findAll(specification,new Sort(DESC,"id"));
}
}

JPA,HQL多對多的查詢語句

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

要查詢教擁有書"a"的學(xué)生的老師!

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會翻譯成兩個表的內(nèi)連接關(guān)系

錯誤寫法:

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)

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

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

相關(guān)文章

  • Java?Stream流語法示例詳解

    Java?Stream流語法示例詳解

    這篇文章主要為大家詳細介紹了Java的Stream流,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot中@ConditionalOnProperty的使用及作用詳解

    SpringBoot中@ConditionalOnProperty的使用及作用詳解

    這篇文章主要介紹了SpringBoot中@ConditionalOnProperty的使用及作用詳解,@ConditionalOnProperty通過讀取本地配置文件中的值來判斷 某些 Bean 或者 配置類 是否加入spring 中,需要的朋友可以參考下
    2024-01-01
  • Java中List集合的常用方法詳解

    Java中List集合的常用方法詳解

    本篇文章給大家?guī)淼膬?nèi)容是關(guān)于Java中List集合的常用方法詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。下面我們就來學(xué)習(xí)一下吧
    2021-11-11
  • 如何實現(xiàn)bean初始化摧毀方法的注入

    如何實現(xiàn)bean初始化摧毀方法的注入

    這篇文章主要為大家介紹了如何實現(xiàn)bean初始化摧毀方法的注入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 解決日期轉(zhuǎn)化Json異常- Date JSON parse error

    解決日期轉(zhuǎn)化Json異常- Date JSON parse error

    這篇文章主要介紹了解決日期轉(zhuǎn)化Json異常- Date JSON parse error問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 詳解springSecurity之java配置篇

    詳解springSecurity之java配置篇

    這篇文章主要介紹了詳解springSecurity之java配置篇,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用

    Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用

    這篇文章主要介紹了Spark學(xué)習(xí)筆記之Spark中的RDD的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Spring Boot 如何整合連接池

    Spring Boot 如何整合連接池

    這篇文章主要介紹了Spring Boot 如何整合連接池,幫助大家更好的理解和學(xué)習(xí)spring boot框架,感興趣的朋友可以了解下
    2020-11-11
  • Linux下JDK安裝教程

    Linux下JDK安裝教程

    這篇文章主要為大家詳細介紹了Linux下JDK安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot?集成Resteasy實現(xiàn)RESTFul接口的詳細過程

    SpringBoot?集成Resteasy實現(xiàn)RESTFul接口的詳細過程

    這篇文章主要介紹了SpringBoot集成Resteasy實現(xiàn)RESTFul接口,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08

最新評論